如何使用Jest运行单个测试?

8 浏览
0 Comments

如何使用Jest运行单个测试?

我在fix-order-test.js文件中有一个名为'works with nested children'的测试。运行下面的命令会运行文件中的所有测试。

jest fix-order-test

我该如何只运行单个测试?下面的命令不起作用,因为它会搜索指定正则表达式的文件。

jest 'works with nested children'

0
0 Comments

问题:如何使用Jest运行单个测试?

问题的出现原因:

有时候我们只想运行一个特定的测试,而不是运行整个测试集。然而,Jest默认情况下会运行所有的测试,这就导致了问题。所以我们需要找到一种方法来指定并运行单个测试。

解决方法:

通过以下两种方法可以解决这个问题。

方法一:完整的命令行运行单个Jest测试

可以使用以下命令行命令来运行单个Jest测试:

node  -i  -c  -t ""

其中,``是Jest的路径,根据不同的操作系统有所不同。在Windows上是`node_modules\jest\bin\jest.js`,在其他系统上是`node_modules/.bin/jest`。``是包含测试的文件的路径,可以是`.js`或`.ts`文件。``是一个单独的Jest配置文件(JSON)的路径,如果你将Jest配置保存在`package.json`中,你不需要指定这个参数,Jest会自动找到它。``是一个测试块(`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);
  });
});

我们可以使用以下命令来运行`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"`块中的两个测试。当然,你也可以通过指定测试的名称来运行特定的测试。

另一种选择是将``参数放在`"test:math"`脚本之外,并从NPM命令中传递:

package.json:

"scripts": {

"test:math": "jest -i test/my-tests.js -t",

}

命令:

npm run test:math "math tests"

现在你可以使用更简短的命令管理要运行的测试的名称。

以上是解决如何使用Jest运行单个测试的两种方法,希望对你有帮助!

0
0 Comments

如何使用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代码。

0
0 Comments

问题:如何使用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进行调试的人来说非常方便。

0