如何使用Jest和vue-cli更新快照

59

在运行我的测试时,我应该能够添加-u参数,但我不知道为什么它不能正常工作:

npm run test ComponentName.spec.js -u
npm run test ComponentName.spec.js --updateSnapshot

但是它不起作用。我的 package.json 文件:

"scripts": {
    "test": "vue-cli-service test:unit",

我知道我可以直接删除快照文件,但我想弄清楚为什么这个命令不起作用。

5个回答

149

根据文档

npm run test -- -u

我验证了这个有效。


1
@SamuelFaure 我发现你可以在你的 package.json 文件中这样写 - "test:unit:update": "vue-cli-service test:unit -u" - Matthew Evans
你甚至不需要再添加“run”了。 - Neil

16
在vue-cli 3中,您通常的npm命令调用的是vue-cli-service而不是jest。 Vue-cli-service将为您调用jest。
您可以运行以下任一命令:
npm run test:unit -- -u
--是为了将下一个参数传递给子命令。
或者:
npx vue-cli-service test:unit -u
这将运行测试并升级快照。

1
npm run test:unit -- -u 在使用 "@vue/cli-service": "^3.5.0" 时对我有效,谢谢! - Doug Wilhelm

10

yarn test -u 对我有用。我们使用yarn。


5

如果您正在使用 Lerna monorepo 运行项目,

您可能想要在包的 package.json 文件中添加一个新脚本:

{
// ...
"scripts": {
  // ...
  "test:update:snapshot": "jest --updateSnapshot"
  // ...
}
// ...
}

所以你可以运行

npx lerna run test:update:snapshot

或者您可以直接输入包并运行

npm run test -- -u

基本上-- 告诉你的命令参数-u是其子命令的参数。


4

使用“npm run test -- -u [file_path]”命令可以针对特定文件运行测试(赞一个 Echo 的答案)。


只需要提供文件名而不是路径,例如 path/ComponentName.spec.js --u,你可以写成 npm run test ComponentName --u - Aivus
这也适用于React测试库。 - Chris Perry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接