我在fix-order-test.js文件中有一个测试“works with nested children”。

运行下面的代码将运行文件中的所有测试。

jest fix-order-test

如何只运行一个测试?下面的方法无法工作,因为它搜索指定的正则表达式的文件。

jest 'works with nested children'

当前回答

在检查了Jest CLI文档之后,我发现这就是我们在特定文件中运行特定测试的方式。

jest --findRelatedTests path/to/fileA.js path/to/fileB.js -t "test name"

纱,

yarn test --findRelatedTests path/to/fileA.js path/to/fileB.js -t "test name"

npm,

npm test -- --findRelatedTests path/to/fileA.js path/to/fileB.js -t "test name"

如需参考,请检查Jest Cli选项

其他回答

对于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
},

Use:

npm run test -- test-name

只有当您的测试规范名称是唯一的时,这才会起作用。

上面的代码将引用一个名为test-name.component.spec.ts的文件

如果有人试图使用joke -t '<testName>'并想知道为什么它不起作用,那么值得注意的是-t参数实际上是一个正则表达式模式,而不是字符串字面量。

如果您的测试名称中没有特殊字符,那么它就会像预期的那样工作(使用来自它的字符串或描述或它们的组合)。

如果您的测试名称确实有特殊字符,如括号,只需用反斜杠转义它们。例如,这样的测试:

it("/ (GET)", () => {
  return request(app.getHttpServer())
    .get("/health")
    .expect(200)
    .expect("Hello World");
});

可以用jest -t "\/ \(GET\)"作为目标。

regex也不需要匹配整个字符串,因此如果您希望基于一致的命名约定运行一个子集,则可以匹配公共部分。

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

在命令行中,使用——testnameppattern或-t标志:

jest -t 'fix-order-test'

这将只运行与您提供的测试名称模式匹配的测试。它在Jest文档中。

另一种方法是在监视模式下运行测试,jest—watch,然后按P来过滤测试,输入测试文件名或T来运行单个测试名称。


如果你在描述块中有一个it,你必须运行

jest -t '<describeString> <itString>'