我能够使用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'
我们在Angular中使用了nrwl-nx。在这种情况下,我们可以使用这个命令:
npm test <ng-project> -- --testFile "file-name-part"
注:
npm test will run the test script specified in package.json:
"test": "ng test"
--: tells npm to pass the following parameters to the test script (instead of consuming them)
Thus the rest of the cmd will be passed to ng test
<ng-project> is the name of a project in angular.json
when you omit this parameter, the "defaultProject" (specified in angular.json) will be used (so you must specify it, when the test is not in your default project)
Next we must check which builder is used:
In angular.json navigate to "project" - "<ng-project>" - "architect" - "test"
and check the "builder", which in our case is: "@nrwl/jest:jest"
Now that we know the builder, we need to find the available cmd-line parameters
On the command line, run npm test <ng-project> -- --help to see all available options
Or check the online documentation
One of the options is --testFile which is used here
你所要做的就是念咒语
npm test -- SomeTestFileToRun
standalone——是*nix的魔法,用于标记选项的结束,这意味着(对于NPM)之后的所有内容都传递给正在运行的命令,在这种情况下是玩笑。顺便说一句,您可以这样显示Jest的使用说明
npm test -- --help
总之,高喊
npm test -- Foo
运行命名文件(FooBar.js)中的测试。不过,你应该注意:
Jest将名称视为区分大小写的,因此如果您正在使用不区分大小写但保留大小写的文件系统(如Windows NTFS),则可能会遇到奇怪的情况。
Jest似乎将规范视为前缀。
所以上面的咒语会
运行FooBar.js, Foo.js和FooZilla.js
但不是运行foo.js
这就是如何在不重新启动测试的情况下动态地运行特定文件上的测试。
我的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
这就是我在特定文件上运行测试的方法。