【问题标题】: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)'

标签: javascript node.js unit-testing jestjs


【解决方案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.* 为我修复了它。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-03-19
              • 2018-12-09
              • 2021-01-01
              • 2018-09-10
              • 1970-01-01
              • 2018-02-15
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多