我可以使用Jest测试多个文件,但我无法弄清楚如何测试单个文件.
我有:
npm install jest-cli --save-devpackage.json:`{..."脚本":{"test":"jest"} ...}正常运行npm test(目前运行14次测试).
如何测试单个文件,例如测试app/foo/__tests__/bar.spec.js?
我试过运行npm test app/foo/__tests__/bar.spec.js(从项目根目录),但我收到以下错误:
npm ERR! Error: ENOENT, open '<path to project>/node_modules/app/foo/__tests__/bar.spec.js/package.json'
Run Code Online (Sandbox Code Playgroud)
谢谢
Nic*_*rey 319
你所要做的就是念咒咒语:
npm test -- SomeTestFileToRun
Run Code Online (Sandbox Code Playgroud)
独立--是*nix magic用于标记选项的结尾,意味着(对于NPM)之后每次传递给正在运行的命令,在这种情况下jest.另外,您可以通过说明显示开玩笑用法说明
npm test -- --help
Run Code Online (Sandbox Code Playgroud)
Any呗
npm test -- Foo
Run Code Online (Sandbox Code Playgroud)
在命名文件(FooBar.js)中运行测试.但是,您应该注意:
Jest将名称视为区分大小写,因此如果您使用的是不区分大小写但保留大小写的文件系统(如Windows NTFS),则可能会遇到看起来很奇怪的问题.
Jest似乎将规范视为前缀.
所以上面的咒语会
FooBar.js,Foo.js和FooZilla.jsfoo.jsncu*_*ery 226
如果jest有效,则表示全局安装了jest.要运行特定测试,您需要使用npm test命令 - jest将无法运行.
所以你可以直接用jest运行 npm i -g jest-cli
注意:您不必输入测试的完整路径:参数变为regexp,因此它只需要成为完整路径的一部分.
注意2.0:如果您已经习惯 yarn global add jest-cli全局安装jest,请将其更改为jest bar.spec.js
cab*_*i99 26
要进行单独测试:
ValidationUtil是我的模块ValidationUtil.spec.js
npm test -t ValidationUtil
Run Code Online (Sandbox Code Playgroud)
-t - >之后放了一个包含测试名的正则表达式
nPc*_*omp 21
如果你安装了 Visual Studio Code 插件Jest Runner,
您将在每个和上方都有调试/运行选项。describeit
您可以在 Visual Studio Code 中打开您的测试文件,然后单击这些选项之一。
Aer*_*Hil 20
使用npm test并不意味着jest是全局安装.它只是意味着"test"映射到你的package.json中使用jest
以下是在项目的根级别对我有用的内容:
node_modules/.bin/jest [args]
Run Code Online (Sandbox Code Playgroud)
args可以是您要运行的测试文件,也可以是包含多个文件的目录.
小智 14
如果您使用,yarn您可以在以下后直接添加.spec.js或.test.js文件:
yarn test src/lib/myfile.test.js
Run Code Online (Sandbox Code Playgroud)
这是我package.json作为本地包安装jest 的部分(删除了相关部分):
{
...
"scripts": {
"test": "jest",
"testw": "jest --watch",
"testc": "jest --coverage",
...
},
"devDependencies": {
"jest": "^18.1.0",
...
},
}
Run Code Online (Sandbox Code Playgroud)
wbh*_*ing 13
要在特定文件中运行特定测试:
yarn test -f "partial-filename" -t "as split node"
Run Code Online (Sandbox Code Playgroud)
npm test,或者jest可以替换yarn test,具体取决于您首选的 JS 捆绑程序。
这只会尝试在包含 的文件中查找测试some-partial-filename,并且在这些文件中,测试需要有一个提及“作为分割节点”的describeorit指令,例如
// In cool-partial-filename.js
describe("with a less indented sibling", () => {
it("should create a new check-list-item with the same indent as split node", () => {
console.log("This would run with the invocation above");
})
})
Run Code Online (Sandbox Code Playgroud)
Spe*_*cer 12
在 package.json中"scripts": { "test": "jest" }:
npm test -- foo/__tests__/bar.spec.js
Run Code Online (Sandbox Code Playgroud)
全局安装:
jest foo/__tests__/bar.spec.js
Run Code Online (Sandbox Code Playgroud)
本地安装:
./node_modules/.bin/jest foo/__tests__/bar.spec.js
Run Code Online (Sandbox Code Playgroud)
--testPathPattern该--testPathPattern选项具有将路径作为未命名位置参数传递给 jest-cli 的等效效果。请参阅normalize.ts。
./node_modules/.bin/jest --testPathPattern foo/__tests__/bar.spec.js
Run Code Online (Sandbox Code Playgroud)
用逗号或空格分隔文件名:
./node_modules/.bin/jest foo/__tests__/bar.spec.js,foo/__tests__/foo.spec.js
Run Code Online (Sandbox Code Playgroud)
./node_modules/.bin/jest foo/__tests__/bar.spec.js foo/__tests__/foo.spec.js
Run Code Online (Sandbox Code Playgroud)
--testPathPattern多次通过:
./node_modules/.bin/jest --testPathPattern foo/__tests__/bar.spec.js --testPathPattern foo/__tests__/foo.spec.js
Run Code Online (Sandbox Code Playgroud)
如果你正在运行npm >= 5.2.0并且你已经在本地安装了 Jest 作为devDependencieswith npm i -d jest,你可以通过执行在特定文件上运行 Jest npx jest /path/to/your/spec.js。
我们将nrwl-nx与Angular 一起使用。在这种情况下,我们可以使用以下命令:
npm test <ng-project> -- --testFile "file-name-part"
Run Code Online (Sandbox Code Playgroud)
笔记:
npm test将运行中指定的测试脚本package.json:
"test": "ng test"<ng-project> 是一个项目的名称 angular.json
"defaultProject"在 中指定angular.json)(因此您必须指定它,当测试不在您的默认项目中时)angular.json导航到"project"- "<ng-project>"- "architect"-"test""builder",在我们的例子中是:"@nrwl/jest:jest"npm test <ng-project> -- --help以查看所有可用选项--testFile这里使用的当时,我是用以下方法做到的:
yarn test TestFileName.spec.js
Run Code Online (Sandbox Code Playgroud)
您不应该输入完整路径。这对我在 Windows 10 机器上有效。
这就是我在特定文件上动态运行测试而无需重新启动测试的方式。
\n我的 React 项目创建为create-react-app.
因此,它会监视更改测试,并在我进行更改时自动运行测试。
\n这就是我在终端中看到的测试结果:
\nTest Suites: 16 passed, 16 total\nTests: 98 passed, 98 total\nSnapshots: 0 total\nTime: 5.048s\nRan all test suites.\n\nWatch Usage: Press w to show more.\nRun Code Online (Sandbox Code Playgroud)\n按W
\nWatch Usage\n \xe2\x80\xba Press f to run only failed tests.\n \xe2\x80\xba Press o to only run tests related to changed files.\n \xe2\x80\xba Press q to quit watch mode.\n \xe2\x80\xba Press p to filter by a filename regex pattern.\n \xe2\x80\xba Press t to filter by a test name regex pattern.\n \xe2\x80\xba Press Enter to trigger a test run.\nRun Code Online (Sandbox Code Playgroud)\n然后按P
\nPattern Mode Usage\n \xe2\x80\xba Press Esc to exit pattern mode.\n \xe2\x80\xba Press Enter to filter by a filenames regex pattern.\n\n pattern \xe2\x80\xba\n\n Start typing to filter by a filename regex pattern.\n\nRun Code Online (Sandbox Code Playgroud)\n这是在我想运行“Login”文件夹中的“index.es6.js”文件之后:
\nPattern Mode Usage\n \xe2\x80\xba Press Esc to exit pattern mode.\n \xe2\x80\xba Press Enter to filter by a filenames regex pattern.\n\n pattern \xe2\x80\xba login/index\n\n Pattern matches 1 file\n \xe2\x80\xba src/containers/Login/index.es6.test.js\nRun Code Online (Sandbox Code Playgroud)\n这就是我对特定文件运行测试的方式。
\n也可以通过以下方式实现:
jest --findRelatedTests path/to/fileA.js
Run Code Online (Sandbox Code Playgroud)
参考(Jest CLI 选项)
如何在 Nx monorepo 中实现这一点?这是答案(在目录中/path/to/workspace):
npx nx test api --findRelatedTests=apps/api/src/app/mytest.spec.ts
Run Code Online (Sandbox Code Playgroud)
参考及更多信息:如何在 Nx #6 中测试单个 Jest 测试文件
简单的方法是运行单个单元测试文件,即在根文件夹内的终端中运行命令。
npm test <fileName.test.js>
// For example
npm test utils.test.js
Run Code Online (Sandbox Code Playgroud)
我还尝试了 Visual Studio Code 的 Jest Runner Extensions,效果很好。
小智 5
当您使用 jest 时,Jest 和 Jest Runner 是非常有用的 VSCode 扩展。
Jest自动测试运行器
Jest Runner在测试上方添加“运行 | 调试”代码镜头以运行或调试单个测试。
下面的命令对我有用。
npx jest -i file-name
不需要指定文件的完整路径,文件名就足够了。
编辑:找到另一种方法来做到这一点。
npm run test:functional -i file-name用于功能测试
npm run test:integration -i file-name用于集成测试
如果您使用的是纱线,请执行此操作
yarn test nameofthefile
Run Code Online (Sandbox Code Playgroud)
例如:
yarn test file.test.js
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
187514 次 |
| 最近记录: |