我在fix-order-test.js文件中有一个测试“works with nested children”。
运行下面的代码将运行文件中的所有测试。
jest fix-order-test
如何只运行一个测试?下面的方法无法工作,因为它搜索指定的正则表达式的文件。
jest 'works with nested children'
我在fix-order-test.js文件中有一个测试“works with nested children”。
运行下面的代码将运行文件中的所有测试。
jest fix-order-test
如何只运行一个测试?下面的方法无法工作,因为它搜索指定的正则表达式的文件。
jest 'works with nested children'
当前回答
运行单个Jest测试的完整命令
命令:
节点<path-to-jest> -i <your-test-file> -c <jest-config> -t "<test-block-name>"
< path-to-jest >: Windows: node_modules \ \ bin \ jest.js开玩笑 其他:node_modules。bin /笑话 -i <you-test-file>:测试文件(js或ts)的路径 -c < Jest -config>:一个单独的Jest配置文件(JSON)的路径,如果你把你的Jest配置保存在包中。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"
将测试它("1 + 1 = 2",…),但如果您将-t参数更改为"math tests",那么它将从describe("math tests",…)块中运行两个测试。
备注:
对于Windows,将node_modules/.bin/jest替换为node_modules\jest\bin\jest.js。 这种方法允许您调试正在运行的脚本。为了打开调试开关,在命令中添加参数——inspect-brk。
通过'package.json'中的NPM脚本运行单个Jest测试
安装了Jest之后,你可以使用NPM脚本简化这个命令的语法。在“包。添加一个新的脚本到“scripts”部分:
"scripts": {
"test:math": "jest -i test/my-tests.js -t \"math tests\"",
}
在本例中,我们使用别名“jest”,而不是写入它的完整路径。此外,我们不指定配置文件的路径,因为我们可以将它放在“package”中。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运行测试:数学“数学测试”
现在您可以使用一个更短的命令来管理运行测试的名称。
备注:
'jest'命令将与NPM脚本一起工作,因为
当运行任何生命周期脚本时,npm将"./node_modules/.bin"作为PATH环境变量的第一个条目,所以这将很好地工作,即使你的程序没有全局安装(npm blog) 2. 这种方法似乎不允许调试,因为Jest是通过二进制/CLI运行的,而不是通过节点。
在Visual Studio Code中运行选定的Jest测试
如果您正在使用Visual Studio Code,您可以利用它并通过按F5按钮运行当前选定的测试(在代码编辑器中)。要做到这一点,我们需要在“.vscode/launch. conf”文件中创建一个新的启动配置块。json文件。在该配置中,我们将使用预定义的变量,这些变量在运行时被适当的(不幸的是并不总是)值所取代。在所有可获得的信息中,我们只对这些感兴趣:
${relativeFile} -当前打开的文件相对于 $ {workspaceFolder} ${selectedText} -活动文件中当前选中的文本
但是在编写启动配置之前,我们应该在我们的“包”中添加“test”脚本。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机器上它不会是“voilà”,因为它们将${relativeFile}变量替换为带有反斜杠的路径(谁知道为什么),Jest无法理解这样的路径。 (如果需要对命令进行故障处理,请参见https://www.basefactor.com/using-visual-studio-code-to-debug-jest-based-unit-tests中的类似方法)
备注:
要在调试器下运行,不要忘记添加'——inspect-brk'参数。 在这个配置示例中,我们没有Jest配置参数,假设它包含在'package.json'中。
其他回答
Jest文档建议如下:
如果测试失败,首先要检查的事情之一应该是 当测试是唯一运行的测试时,测试是否失败。在开玩笑 只运行一个测试很简单——只是临时更改该测试 命令到test.only
test.only('this will be the only test that runs', () => {
expect(true).toBe(false);
});
or
it.only('this will be the only test that runs', () => {
expect(true).toBe(false);
});
对于Windows中的VSCode,我在我的启动中使用这些。json文件。注意使用${pathSeparator}来处理Win和Mac中的差异。在调试下拉菜单中选择一个并按F5运行。
{
"name": "Debug Selected Jest Test",
"type": "node",
"request": "launch",
"runtimeArgs": ["--inspect-brk", "${workspaceRoot}/node_modules/jest/bin/jest.js", "--runInBand"],
"args": ["--", "-i", "${fileDirnameBasename}${pathSeparator}${fileBasename} ", "-t", "${selectedText}"],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"port": 9229
},
{
"name": "Debug Named Jest Test",
"type": "node",
"request": "launch",
"runtimeArgs": ["--inspect-brk", "${workspaceRoot}/node_modules/jest/bin/jest.js", "--runInBand"],
"args": ["--", "-i", "${fileDirnameBasename}${pathSeparator}${fileBasename} ", "-t", "filename.test.js"],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"port": 9229
},
在命令行中,使用——testnameppattern或-t标志:
jest -t 'fix-order-test'
这将只运行与您提供的测试名称模式匹配的测试。它在Jest文档中。
另一种方法是在监视模式下运行测试,jest—watch,然后按P来过滤测试,输入测试文件名或T来运行单个测试名称。
如果你在描述块中有一个it,你必须运行
jest -t '<describeString> <itString>'
如果你把jest作为脚本命令运行,比如npm test,你需要使用下面的命令让它工作:
npm test -- -t "fix order test"
https://jestjs.io/docs/cli#--testnamepatternregex
你的测试是这个文件my。test。js
test("My Sum", () => {
const sum = 3;
expect(sum).toBe(3);
});
以测试名在CLI上运行
jest -t Sum
使用npm测试与regex匹配部分文件名的例子:my.test.js
npm test -t my