有条件地忽略 Karma / Jasmine 的个别测试

2024-06-18

我有一些测试在 PhantomJS 中失败,但在其他浏览器中则不然。

我希望在我的监视任务中使用 PhantomJS 运行时忽略这些测试(因此新的浏览器窗口不会获得焦点并且性能更快一点),但在我的标准测试任务和 CI 管道中,我想要all在 Chrome、Firefox 等中运行的测试...

我考虑过像这样的文件命名约定foo.spec.dont-use-phantom.js并排除我的 Karma 配置中的那些,但这意味着我必须将失败的各个测试分离到自己的文件中,将它们与逻辑分开describe块并拥有更多具有奇怪命名约定的文件通常会很糟糕。

简而言之:

有没有办法可以以某种方式扩展 Jasmine 和/或 Karmaannotate单独的测试仅在某些配置下运行?


茉莉花支持pending()功能。

如果你打电话pending()在规范正文中的任何位置,无论期望如何,规范都将被标记为待处理。

您可以致电pending()直接在 test 中,或者在 test 调用的其他函数中。

function skipIfCondition() {
  pending();
}

function someSkipCheck() {
  return true;
}

describe("test", function() {
  it("call pending directly by condition", function() {
    if (someSkipCheck()) {
      pending();
    }

    expect(1).toBe(2);
  });

  it("call conditionally skip function", function() {
    skipIfCondition();

    expect(1).toBe(3);
  });

  it("is executed", function() {
    expect(1).toBe(1);
  });

});

工作示例在这里:http://plnkr.co/edit/JZtAKALK9wi5PdIkbw8r?p=preview http://plnkr.co/edit/JZtAKALK9wi5PdIkbw8r?p=preview

我认为这是最纯粹的解决方案。在测试结果中,您可以看到已完成和跳过的测试的计数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有条件地忽略 Karma / Jasmine 的个别测试 的相关文章

随机推荐