我在fix-order-test.js文件中有一个测试“可与嵌套子代一起工作”。
运行以下命令将运行文件中的所有测试。
jest fix-order-test
如何只运行一个测试?以下内容不起作用,因为它搜索指定的正则表达式文件。
jest 'works with nested children'
--testNamePattern
'works with nested children'
Jest CLI选项#testNamePattern
我在fix-order-test.js文件中有一个测试“可与嵌套子代一起工作”。
运行以下命令将运行文件中的所有测试。
jest fix-order-test
如何只运行一个测试?以下内容不起作用,因为它搜索指定的正则表达式文件。
jest 'works with nested children'
--testNamePattern
'works with nested children'
Jest CLI选项#testNamePattern
Answers:
在命令行中使用--testNamePattern
或-t
标志
jest -t 'fix-order-test'
这只会运行与您提供的测试名称模式匹配的测试。在Jest docs中。
另一种方法是在监视模式下运行测试,jest --watch
然后按键p入测试文件名或t运行单个测试名称以筛选测试。
如果您it
在describe
街区内部,则必须运行
jest -t '<describeString> <itString>'
it()
函数内部特定测试名称的测试模式,而不是文件名。这是我的想法。
npm test -- -t "fix order test"
./node_modules/.bin/jest --config=./.jest.config.json ./src/x/y/sites.js/sitesWorker.test.js -t 'given only incorrect sites'
Jest文档建议以下内容:
如果测试失败,则要检查的第一件事就是当它是唯一运行的测试时,测试是否失败。在Jest中,仅运行一个测试很简单-只需将该
test
命令临时更改为test.only
test.only('this will be the only test that runs', () => {
expect(true).toBe(false);
});
要么
it.only('this will be the only test that runs', () => {
expect(true).toBe(false);
});
test.only
。因此,如果您只想在包含多个文件的一组测试用例中包含多个测试用例的文件中运行一个测试,那么不幸的是,您必须运行该单个文件jest myTestFile.test.js
npm test
。您必须自己运行文件或按p
设置过滤器。
命令:
node <path-to-jest> -i <you-test-file> -c <jest-config> -t "<test-block-name>"
<path-to-jest>
:
node_modules\jest\bin\jest.js
node_modules/.bin/jest
-i <you-test-file>
:包含测试(js
或ts
)的文件的路径-c <jest-config>
:指向单独的Jest配置文件(JSON)的路径,如果您将Jest配置保留在其中package.json
,则无需指定此参数(Jest会在没有您帮助的情况下找到它)-t <the-name-of-test-block>
:实际上它是一个名称(第一个参数)describe(...)
,it(...)
或test(...)
块。例:
describe("math tests", () => {
it("1 + 1 = 2", () => {
expect(1 + 1).toBe(2);
});
it("-1 * -1 !== -1", () => {
expect(-1 * -1).not.toBe(-1);
});
});
所以,命令
node node_modules/jest/bin/jest.js -i test/math-tests.js -c test/tests-config.json -t "1 + 1 = 2"
将测试it("1 + 1 = 2", ...)
,但是如果将-t
参数更改为"math tests"
,它将从该describe("math tests",...)
块运行两个测试。
备注:
node_modules/.bin/jest
为node_modules\jest\bin\jest.js
。'--inspect-brk'
,请在命令中添加参数。安装Jest之后,您可以使用NPM脚本简化该命令的语法(上述)。在"package.json"
该"scripts"
部分中添加新脚本:
"scripts": {
"test:math": "jest -i test/my-tests.js -t \"math tests\"",
}
在这种情况下,我们使用别名'jest'
而不是为其写入完整路径。另外,我们也没有指定配置文件路径,因为我们也可以将其放置在其中"package.json"
,并且Jest会默认查看它。现在,您可以运行以下命令:
npm run test:math
然后"math tests"
将执行带有两个测试的块。或者,当然,您可以通过名称指定一个特定的测试。
另一个选择是将<the-name-of-test-block>
参数拉出"test:math"
脚本,然后从NPM命令传递该参数:
package.json:
"scripts": {
"test:math": "jest -i test/my-tests.js -t",
}
命令:
npm run test:math "math tests"
现在,您可以使用更短的命令来管理运行测试的名称。
备注:
'jest'
命令将与NPM脚本一起使用,因为
运行任何生命周期脚本时,npm都会
"./node_modules/.bin"
在PATH
环境变量中输入第一个条目,因此即使您的程序未全局安装,它也可以正常工作(NPM blog)
node
。如果您使用的是Visual Studio Code,则可以利用它并通过按F5
按钮运行当前选择的测试(在代码编辑器中)。为此,我们将需要在文件中创建一个新的启动配置块".vscode/launch.json"
。在该配置中,我们将使用预定义的变量,这些变量在运行时将被适当的值(不幸的是并非总是)替换。在所有可用的中,我们仅对这些感兴趣:
${relativeFile}
-当前打开的文件相对于
${workspaceFolder}
${selectedText}
-活动文件中的当前选定文本但是在写出启动配置之前,我们应该'test'
在我们的脚本中添加脚本'package.json'
(如果还没有的话)。
package.json:
"scripts": {
"test": "jest"
}
然后我们可以在启动配置中使用它。
启动配置:
{
"type": "node",
"request": "launch",
"name": "Run selected Jest test",
"runtimeExecutable": "npm",
"runtimeArgs": [
"run-script",
"test"
],
"args": [
"--",
"-i",
"${relativeFile}",
"-t",
"${selectedText}"
],
"console": "integratedTerminal",
}
它实际上与此答案前面所述的命令相同。现在一切都准备就绪,我们可以运行所需的任何测试,而不必手动重写命令参数。
这是您需要做的所有事情:
'F5'
按钮。瞧!
现在,要运行任何测试,只需在编辑器中打开它,选择它的名称并按F5。
不幸的是,在Windows机器上它不会“瞧”,因为它们将${relativeFile}
变量(由谁知道)替换为带有反斜杠的路径,而Jest无法理解这种路径。
备注:
'--inspect-brk'
参数。'package.json'
。npx
,无论使用哪种操作系统,都可以大大简化对Jest的调用。
您也可以使用f
或x
集中或排除测试。例如
fit('only this test will run', () => {
expect(true).toBe(false);
});
it('this test will not run', () => {
expect(true).toBe(false);
});
xit('this test will be ignored', () => {
expect(true).toBe(false);
});
xit
确实为我工作,但fit
没有。我正在使用jest@22.4.4。
fit
为我工作在jest@23.1.0中。
f
它只能在一个文件中使用。
如上所述,您可以运行命令
jest -t 'fix-order-test'
如果您it
在describe
街区内部,则必须运行
jest -t '<describeString> <itString>'
如果您jest
以脚本命令运行,例如npm test
,则需要使用以下命令使其运行:
npm test -- -t "fix order test"
使用最新的jest版本,您可以使用以下其中一项仅运行一个测试,对于测试套件也是如此。
it.only('test 1', () => {})
test.only('test 1', () => {})
fit('test 1', () => {})
jest 'test 1'
如果测试名称是唯一的,也可能起作用。
在VS Code中,这让我仅使用断点运行/调试1个Jest测试:https : //github.com/Microsoft/vscode-recipes/tree/master/debugging-jest-tests
我的launch.json
里面有这个:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Jest All",
"program": "${workspaceFolder}/node_modules/.bin/jest",
"args": ["--runInBand"],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"windows": {
"program": "${workspaceFolder}/node_modules/jest/bin/jest",
}
},
{
"type": "node",
"request": "launch",
"name": "Jest Current File",
"program": "${workspaceFolder}/node_modules/.bin/jest",
"args": ["${relativeFile}"],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"windows": {
"program": "${workspaceFolder}/node_modules/jest/bin/jest",
}
}
]
}
这在package.json
:
"scripts": {
"test": "jest"
}
test
(或it
)更改为test.only
(或it.only
)。要运行1个测试套件(几个测试),请更改describe
为describe.only
。Jest Current File
。"scripts": { "test": "jest" }
in,package.json
因为您已经在中的"program"
参数中指定了完整路径launch.json
。
./node_modules/.bin/jest --config test/jest-unit-config.json --runInBand src/components/OpenForm/OpenForm.spec.js -t 'show expanded'
./node_modules/.bin/...
这是访问本地安装的软件包随附的本地安装的jest(或mocha或...)二进制文件的一种好方法。(是的,在您的npm脚本中,您jest
之前什么都做不到,但这在命令行上很方便...(这也是调试配置的好开始,无论您使用的是哪种IDE ...)package.json
),这就是您需要的。--runInBand
–如前所述,不了解您的配置,但是如果您专注于开发/修复单个测试,则宁愿不与Web工作者打交道...-t
用来不运行该文件中的所有测试,而只能运行一个测试(此处为:一个show expanded
名称中带有“ ”的测试)。通过粘贴.only()
到该文件中可以达到相同的效果。npm run test -- test-name
仅当您的测试规范名称唯一时,这才起作用。上面的代码将引用
具有以下名称的文件: test-name.component.spec.ts