开玩笑 没有找到测试

Posted

技术标签:

【中文标题】开玩笑 没有找到测试【英文标题】:Jest No Tests found 【发布时间】:2017-11-28 05:36:54 【问题描述】:

在 macOS 上运行 docker mhart/alpine-node:8

nodejs (6.10.3-r0) (18/18) 纱线 0.24.6 开玩笑 20.0.4

但是,在运行代码时,我有一个 __tests__/index.test.js 文件

node_modules/.bin/jest --watchAll我得到以下输出

没有找到测试 在 /usr/src/app 已检查 5 个文件。 testMatch:/__tests__//*.js?(x),**/?(*.)(spec|test).js?(x) - 1 场比赛 testPathIgnorePatterns: /node_modules/,/src,src - 0 个匹配项 模式:"" - 0 个匹配项

我已经重新安装了包号,但无济于事。

【问题讨论】:

我解决这个问题的方法是稍微改变我的 docker-compose 命令。我将command: npm run cover && bash <(curl -s https://codecov.io/bash) 更改为command: bash -c 'npm run cover && bash <(curl -s https://codecov.io/bash)' 【参考方案1】:

您的输出显示testMatch1 match,这可能是您的__tests__/index.test.js 文件。似乎您的 testPathIgnorePatterns 导致该测试套件被忽略。 No tests found In /usr/src/app 表示 Jest 正在 /usr/src/app 中寻找测试,testPathIgnorePatterns: /node_modules/,/src,src 表示 Jest 正在忽略 /src 目录中的文件。

如果您的 __tests__/index.test.js 文件位于 /src 目录之外,请让 Jest 查看它的位置,或者阻止 testPathIgnorePatterns 忽略 /src 目录。

【讨论】:

【参考方案2】:

如果您想运行 tests 文件夹中的所有测试,您只需执行以下操作 jest __tests__ --watch

【讨论】:

【参考方案3】:

我在尝试在项目的子模块中运行测试时遇到此错误。通过在与主项目不同的文件夹树中单独测试子模块来解决此问题。

【讨论】:

【参考方案4】:

您可以尝试不带任何参数运行jest。需要注意的关键是测试文件名必须遵循约定*.test.js*.spec.js

【讨论】:

有没有办法只使用.js 扩展而不是test.jsspec.js【参考方案5】:

如果你有如下文件结构

myFolder
│   myFile1.js
│   myFile2.js
│   ...
│   
└───__tests__
        myFile1.spec.js
        myFile2.spec.js
        ...

那么您需要在jest.config.js 中为testMatch 属性提供以下模式:

testMatch: ['**/__tests__/*.js?(x)'],

jest.config.js的简单例子:

const jestConfig = 
  verbose: true,
  testURL: "http://localhost/",
  'transform': 
    '^.+\\.jsx?$': 'babel-jest',
  ,
  testMatch: ['**/__tests__/*.js?(x)'],


module.exports = jestConfig

【讨论】:

【参考方案6】:

在 package.json 中有一个用于查找测试文件的模式。在此模式中,您可以根据文件位置更改它或使其成为全局模式。

我写了一个测试,不在特定文件夹中并遵循命名约定*.test.js并更改testMatch

"testMatch": [
      "<rootDir>/src/**/*.(test).js,jsx,ts,tsx",
      "<rootDir>/src/**/?(*.)(spec|test).js,jsx,ts,tsx"
    ],

【讨论】:

【参考方案7】:

如果您使用的是 Typescript,在我将 Typescript 从 3.3 更新到 3.8.3 后,我开始收到相同的 No tests found 错误。将 jest 和 ts-jest 从版本 23.* 更新到 25.* 为我修复了它。

【讨论】:

以上是关于开玩笑 没有找到测试的主要内容,如果未能解决你的问题,请参考以下文章

Dispatcher 没有在开玩笑的单元测试中注册回调

ReferenceError:在开玩笑测试中没有定义 React

调度程序没有在开玩笑的单元测试中注册回调

开玩笑 - spyOn 没有代码覆盖实际实现

开玩笑的 expect.any() 没有按预期工作

开玩笑找不到别名路径