使用Jest仅运行一次测试

时间:2017-06-08 22:36:42

标签: javascript unit-testing jestjs

很简单,我想用Jest运行一次测试。

我放了it.onlydescribe.only但它仍然运行了很多测试。 我认为自上次提交以来它运行了所有测试,但它不应该明确设置only标志的这种行为,对吗?

导致此行为的原因以及如何运行单个测试?

5 个答案:

答案 0 :(得分:53)

  

Jest 并行化测试运行,并且它不知道预先测试它   应该运行,哪些不应该运行。   这意味着当您使用“fit”时,它只会在该文件中运行一个测试   但仍然在项目中运行所有其他测试文件

fitfdescribeit.onlydescribe.only具有相同的目的,跳过其他地方,只运行我。

来源:https://github.com/facebook/jest/issues/698#issuecomment-177673281

在运行

等测试时使用jest过滤机制
jest --config=jest.config.json --watch

您可以按testnamefilename过滤测试,只需按照终端中的说明进行操作

enter image description here

p,然后输入文件名

enter image description here

然后您可以使用describe.onlyit.only,它将跳过经过筛选的测试文件中的所有其他测试。

答案 1 :(得分:13)

it.onlydescribe.only仅适用于他们所在的模块。如果您在多个文件中过滤测试时遇到问题,可以使用jest -t name-of-spec,过滤符合规范的测试名称(与描述或测试中的名称匹配) 资料来源:https://facebook.github.io/jest/docs/en/cli.html

例如,我专注于我正在编写的测试(使用package.json中的测试脚本):
npm test -- -t "test foo"

答案 2 :(得分:1)

是这样的:

jest sometest.test.js -t "some expression to match a describe or a test"

它将测试名称为sometest.test.js并基于-t选项匹配的所有文件,如果您只想测试特定文件,则可以执行以下操作:

jest src/user/.../sometest.test.js

答案 3 :(得分:0)

对我来说,如果我使用以下2个参数,则可以正常工作:

yarn test --watch -f "src/...fullpath.../reducer.spec.js" -t "Name of the test"

-watch:是可选的

-f:将对文件进行过滤,因此,如果您有很多同名测试,请指定精确文件的完整路径

-t:使用测试的“描述”名称或“它”名称

答案 4 :(得分:-1)

尝试输入完整路径会导致 0 个匹配该模式,即使文件存在并且有几个断言。