我只想用 Jest 运行一个测试。
我使用 it.only
或 describe.only
,但它仍然运行大量测试。我认为它运行了自我上次提交以来的所有测试,但它不应该在明确设置 only
标志的情况下出现这种行为,对吧?
是什么导致了这种行为,如何运行单个测试?
Jest 并行化测试运行,并且它不知道它应该运行哪些测试以及不应该运行哪些测试。这意味着当您使用“fit”时,它只会在该文件中运行一项测试。但它仍然运行您项目中的所有其他测试文件。
fit
、fdescribe
和 it.only
、describe.only
具有相同的目的:跳过其他测试并只运行我。
来源:https://github.com/facebook/jest/issues/698#issuecomment-177673281
使用 Jest 过滤机制。当您运行测试时,
jest --config=jest.config.json --watch
您可以按 testname
或 filename
过滤测试。只需按照终端中的说明进行操作即可。
https://i.stack.imgur.com/rBxQS.png
按 p
,然后键入文件名。
https://i.stack.imgur.com/ezrVi.png
然后您可以使用 describe.only
和 it.only
,这将跳过过滤后的测试文件中的所有其他测试。
it.only
和 describe.only
仅适用于它们所在的模块。如果您在过滤多个文件中的测试时遇到问题,您可以使用 jest -t name-of-spec
,过滤与指定名称匹配的测试(与 describe 或测试)。
例如,我像这样关注我当前正在编写的测试(使用 package.json
中的测试脚本):
npm test -- -t "test foo"
describe
块)中。如果是这种情况,您应该缩小到您想要关注的确切测试名称。
就像这样:
jest sometest.test.js -t "some expression to match a describe or a test"
它将测试名称为 sometest.test.js
并基于 -t 选项进行匹配的所有文件。如果你只想测试一个特定的文件,你可以这样做:
jest src/user/.../sometest.test.js
launch.json
配置文件中实现此选项的人,该配置文件将触发特定测试用例的测试:medium.com/better-programming/…
对我来说,如果我使用这样的两个参数,它会起作用:
yarn test --watch -f "src/...fullpath.../reducer.spec.js" -t "Name of the test"
标志:
--watch: is optional
-f: will do filtering of your files, so if you have a lot of tests with the same name, specify the full path to the exact file
-t: works with 'describe' name or 'it' name of your test
-f
开关是 --onlyFailures
,not 基于文件路径进行过滤(“运行在上一次执行中失败的测试。”)如果您省略 -f
,我认为这会起作用
尝试在 0 匹配该模式时输入完整路径,即使该文件存在并且有几个断言。
.only
只适用于同一文件的测试?it.only
或it.skip
用于包含语法错误的单个测试,所有测试都将失败。当然,模式排除的文件中的代码将不会被执行。 imgur.com/z9FlQEZif.only
它 console.logs 的次数与您的监视模式中该组件的跳过/未跳过测试一样多。