如何使用Jest运行单个测试?
问题:如何使用Jest运行单个测试?
问题的出现原因:
有时候我们只想运行一个特定的测试,而不是运行整个测试集。然而,Jest默认情况下会运行所有的测试,这就导致了问题。所以我们需要找到一种方法来指定并运行单个测试。
解决方法:
通过以下两种方法可以解决这个问题。
方法一:完整的命令行运行单个Jest测试
可以使用以下命令行命令来运行单个Jest测试:
node-i -c -t " "
其中,`
举个例子,如果我们有以下测试代码:
describe("math tests", () => { it("1 + 1 = 2", () => { expect(1 + 1).toBe(2); }); it("-1 * -1 !== -1", () => { expect(-1 * -1).not.toBe(-1); }); });
我们可以使用以下命令来运行`it("1 + 1 = 2", ...)`这个测试:
node node_modules/jest/bin/jest.js -i test/math-tests.js -c test/tests-config.json -t "1 + 1 = 2"
如果我们将`-t`参数改为`"math tests"`,它将运行`describe("math tests",...)`块中的两个测试。
方法二:通过NPM脚本运行单个Jest测试
在`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"`块中的两个测试。当然,你也可以通过指定测试的名称来运行特定的测试。
另一种选择是将`
package.json:
"scripts": {
"test:math": "jest -i test/my-tests.js -t",
}
命令:
npm run test:math "math tests"
现在你可以使用更简短的命令管理要运行的测试的名称。
以上是解决如何使用Jest运行单个测试的两种方法,希望对你有帮助!
如何使用Jest运行单个测试?
Jest是一个用于JavaScript测试的强大框架,它可以帮助我们编写和运行测试。有时候,在开发过程中,我们只想运行单个测试,而不是运行整个测试套件。本文将介绍如何使用Jest运行单个测试的方法。
首先,我们可以在命令行中使用--testNamePattern
或-t
标志来运行单个测试。例如,我们可以运行以下命令:jest -t 'fix-order-test'
,这将只运行与提供的测试名称模式匹配的测试。更多关于这个标志的信息可以在Jest文档中找到。
另一种方法是在观察模式下运行测试,通过运行jest --watch
命令,然后按下P键来按测试文件名过滤测试,或按下T键来运行单个测试名称。
有时候,如果我们在describe
块中有一个it
,我们需要运行jest -t '<describeString> <itString>'
命令来运行单个测试。这个命令将运行与提供的描述字符串和测试字符串匹配的测试。
但是,有些用户在运行jest -t
命令时遇到了问题。有用户报告说,他们得到了"-t"选项无法识别的错误。这个问题可能是因为他们使用的Jest版本过低,因为该选项在16.0版本中才被添加。解决方法是升级到最新版本的Jest。
另外,我们需要注意的是,-t
选项是用来指定单个测试名称的,而不是文件名。
如果我们使用的是npm test命令来运行测试,我们需要使用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'
。或者,他们可以在describe块中添加.only
来只运行特定的测试:describe('.only ....
,然后添加-t=\.only
。
总之,Jest提供了多种方法来运行单个测试,无论是通过指定测试名称模式,还是通过选择特定的测试文件来运行。通过这些方法,我们可以更加高效地开发和测试我们的JavaScript代码。
问题:如何使用Jest运行单个测试?
原因:当一个测试失败时,我们需要检查的第一件事是,当它是唯一运行的测试时,该测试是否失败。在Jest中,只运行一个测试非常简单-只需将该test
命令临时更改为test.only
。
解决方法:在需要运行的测试函数前面加上.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); });
注意:这种方法只会跳过文件中的其他测试,其他文件中的测试仍将运行,除非你已经限制了只运行一个文件。这是Jest的一个特性,因为它异步运行测试,可能无法从一开始确定在哪个文件中运行哪个测试。所以默认情况下会运行所有文件,并在文件内部检查test.only
。因此,如果你只想在一个包含多个测试用例的文件中运行一个测试,你不得不不幸地运行那个单独的文件jest myTestFile.test.js
。
另外,注意这是一个正则表达式字段,所以如果你的测试用例命名为'[foo] bar'
,你实际上需要使用字符串'\[foo] bar'
。
这种方法已经在Jest 20.0.4版本中经过测试,并且在Jest 24.9.0和Jest 29.3.1版本中也有效。对于那些使用ts-jest + VsCode进行调试的人来说非常方便。