我怎样才能让 jasmine-ts 使用特定的种子来执行我的规范?
How can I get jasmine-ts to execute my specs with a specific seed?
我正在 运行 使用 jasmine-ts
版本 0.3.0 进行单元测试。
之前的版本运行良好,但在我升级的那一刻,我得到了输出:
No specs found
我发现 github issue (and this one) 有人评论说:
All arguments passed to jasmine-ts
need to have one of these in that argument argv.config || process.env.JASMINE_CONFIG_PATH || "spec/support/jasmine.json";
的确,创建 jasmine.json
文件解决了 "No specs issue":
{
"spec_dir": "../src/**/specs",
"spec_files": [
"**/*[sS]pec.ts"
],
"stopSpecOnExecutionFailure": false,
"random": true
}
运行 我的测试是随机的,我发现我有一些失败,所以我想用特定的种子来播种 jasmine 执行以重现问题。
我尝试将 "seed": 123
配置添加到我的 jasmine.json
,但这没有用。我发现一些 docs 描述了 jasmine.json
应该是什么样子,它没有提到任何 seed
配置。
seed
提到的是有关命令行选项的部分 here。
所以我尝试了:
jasmine-ts --seed=123 --config="./jasmine.json"
(请记住,配置文件显然是必需的 - 或者至少我没有看到任何选项来指定我的规格在哪里而不使用它)
然而这并没有像 jasmine 记录的那样工作:
Randomized with seed 94263
我提供的配置文件显然覆盖了命令行选项。我可以通过指定选项 --random=false
来查看这一点,但输出仍然显示 Randomized with seed ...
,因为我的 jasmine.json 包含 "random": true
.
所以...我无法在jasmine.json中指定seed
,指定--seed=...
也没有效果。
在这种情况下,如何使用 jasmine-ts 0.3.0 设置种子?
运行 遇到与常规 Jasmine 相同的问题,发现由于某种原因它不会在 loadConfig
中复制它,但是如果 运行 它来自你自己的脚本:
const jasmine = new Jasmine();
jasmine.seed(1234);
从 jasmine-ts 版本 0.3.2(here's 已关闭的问题)开始,命令行参数现在被转发给 jasmine,因此给定一个 package.json 如:
{
...
"scripts": {
"test": "jasmine-ts.cmd --config=jasmine.json"
}
}
您可以从命令行 运行 npm run test -- --seed=1234
。
在升级到 angular 12 时 运行 遇到了这个问题。我有一个特定的种子失败,因为在执行之间没有正确解决一些异步测试的顺序。
我能够通过更新 karma.conf.js 文件获得 运行 的特定种子:
client:{
captureConsole: true,
clearContext: false, // leave Jasmine Spec Runner output visible in browser
jasmine: {
seed: 19224, // set value to here and comment out when done
random: false // set this to false while running the seed and switch back to true for normal builds.
}
这样做对我来说是 运行 特定茉莉花种子的简单方法。
我正在 运行 使用 jasmine-ts
版本 0.3.0 进行单元测试。
之前的版本运行良好,但在我升级的那一刻,我得到了输出:
No specs found
我发现 github issue (and this one) 有人评论说:
All arguments passed to
jasmine-ts
need to have one of these in that argumentargv.config || process.env.JASMINE_CONFIG_PATH || "spec/support/jasmine.json";
的确,创建 jasmine.json
文件解决了 "No specs issue":
{
"spec_dir": "../src/**/specs",
"spec_files": [
"**/*[sS]pec.ts"
],
"stopSpecOnExecutionFailure": false,
"random": true
}
运行 我的测试是随机的,我发现我有一些失败,所以我想用特定的种子来播种 jasmine 执行以重现问题。
我尝试将 "seed": 123
配置添加到我的 jasmine.json
,但这没有用。我发现一些 docs 描述了 jasmine.json
应该是什么样子,它没有提到任何 seed
配置。
seed
提到的是有关命令行选项的部分 here。
所以我尝试了:
jasmine-ts --seed=123 --config="./jasmine.json"
(请记住,配置文件显然是必需的 - 或者至少我没有看到任何选项来指定我的规格在哪里而不使用它)
然而这并没有像 jasmine 记录的那样工作:
Randomized with seed 94263
我提供的配置文件显然覆盖了命令行选项。我可以通过指定选项 --random=false
来查看这一点,但输出仍然显示 Randomized with seed ...
,因为我的 jasmine.json 包含 "random": true
.
所以...我无法在jasmine.json中指定seed
,指定--seed=...
也没有效果。
在这种情况下,如何使用 jasmine-ts 0.3.0 设置种子?
运行 遇到与常规 Jasmine 相同的问题,发现由于某种原因它不会在 loadConfig
中复制它,但是如果 运行 它来自你自己的脚本:
const jasmine = new Jasmine();
jasmine.seed(1234);
从 jasmine-ts 版本 0.3.2(here's 已关闭的问题)开始,命令行参数现在被转发给 jasmine,因此给定一个 package.json 如:
{
...
"scripts": {
"test": "jasmine-ts.cmd --config=jasmine.json"
}
}
您可以从命令行 运行 npm run test -- --seed=1234
。
在升级到 angular 12 时 运行 遇到了这个问题。我有一个特定的种子失败,因为在执行之间没有正确解决一些异步测试的顺序。
我能够通过更新 karma.conf.js 文件获得 运行 的特定种子:
client:{
captureConsole: true,
clearContext: false, // leave Jasmine Spec Runner output visible in browser
jasmine: {
seed: 19224, // set value to here and comment out when done
random: false // set this to false while running the seed and switch back to true for normal builds.
}
这样做对我来说是 运行 特定茉莉花种子的简单方法。