我怎样才能让 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.
  }

这样做对我来说是 运行 特定茉莉花种子的简单方法。