我能够使用Jest测试多个文件,但我不知道如何测试单个文件。

我有:

执行npm install jest-cli——save-dev命令 更新包。Json: '{…"scripts": {"test": "jest"}…} 编写了许多测试。

运行npm测试可以正常工作(目前运行14个测试)。

如何测试单个文件,例如test app/foo/__tests__/bar.spec.js?

我已经尝试运行npm test app/foo/__tests__/bar.spec.js(从项目根),但我得到以下错误:

npm犯错!错误:ENOENT,打开'/node_modules/app/foo/tests/bar.spec.js/package.json'


当前回答

一个简单可行的解决方案:

yarn test -g文件名或

npm test -g fileName

例子:

yarn test -g cancelTransaction或

取消事务

关于测试过滤器的更多信息:

Test Filters
--fgrep, -f Only run tests containing this string [string]
--grep, -g Only run tests matching this string or regexp [string]
--invert, -i Inverts --grep and --fgrep matches [boolean]

其他回答

使用package.json:

  "scripts": {
    "test": "jest --coverage",
    "start": "node index.js"
  }

下面的方法对我很有效:

npm test -f comm -- -t=first

它会找到文件名中包含“comm”的所有文件,只运行找到的文件中包含“first”的测试。

Jest将使用您传递的内容作为正则表达式模式。它会匹配。

如果您想运行一个特定的测试文件,那么最好的方法是使用它的精确完整路径。(你也可以指定一个特定的相对路径,比如(src/XFolder/index.spec.ts))。

在Linux中提供目录中完整路径的最简单方法是:

jest $PWD/index.spec.ts

注意变量$PWD的使用。

对于Windows !(待更新)

运行单个测试:

npm test -t ValidationUtil # `ValidationUtil` is my module `ValidationUtil.spec.js`

-t -在后面,放置一个包含测试名称的正则表达式。

只需使用此命令运行并检查特定文件的覆盖范围。

yarn run test Index.js -u --coverage --watchAll=false

这就是如何在不重新启动测试的情况下动态地运行特定文件上的测试。

我的React项目创建为create-react-app。

所以它会监视测试的变化,当我做出改变时自动运行测试。

这就是我在终端中看到的测试结果:

Test Suites: 16 passed, 16 total
Tests:       98 passed, 98 total
Snapshots:   0 total
Time:        5.048s
Ran all test suites.

Watch Usage: Press w to show more.

按W

Watch Usage
 › Press f to run only failed tests.
 › Press o to only run tests related to changed files.
 › Press q to quit watch mode.
 › Press p to filter by a filename regex pattern.
 › Press t to filter by a test name regex pattern.
 › Press Enter to trigger a test run.

然后按P

Pattern Mode Usage
 › Press Esc to exit pattern mode.
 › Press Enter to filter by a filenames regex pattern.

 pattern ›

 Start typing to filter by a filename regex pattern.

这是在我想运行'Login'文件夹中的'index.es6.js'文件之后:

Pattern Mode Usage
 › Press Esc to exit pattern mode.
 › Press Enter to filter by a filenames regex pattern.

 pattern › login/index

 Pattern matches 1 file
 › src/containers/Login/index.es6.test.js

这就是我在特定文件上运行测试的方法。