按顺序运行 Jasmine 测试

use*_*724 7 testing jasmine karma-runner webpack

我正在使用 Karma/Jasmine 来运行许多规范文件。我的测试使用了一些全局函数。一些测试模拟了其他测试所依赖的全局函数。由于测试是异步运行的,因此某些测试会失败,因为其他测试更改了全局函数的预期行为。

有没有办法按顺序运行测试?

小智 7

在 jasmine.json 中将“随机”设置为 false

该文件应添加到 spec/support/jasmine.json

  • 可以通过以下方式在规范代码中实现相同的效果: ``jasmine.getEnv().configure({ random: false });``` (2认同)

小智 5

我不认为异步测试会同时运行两个测试。这种副作用很可能发生,因为您在单个测试结束后没有重置全局函数。如果您在每次测试后不恢复全局函数,并且运行的下一个测试(可能是套件中的任何单独测试)依赖于相同的函数,则可能会失败。

例如(使用 sinon)

describe("A suite", function() {
    beforeEach(function() {
      sinon.stub(someGlobal, 'someFunc')
    });

    afterEach(function() {
      someGlobal.sumFunc.restore()
    })

    it("uses global function", function() {
      ...
    });
});
Run Code Online (Sandbox Code Playgroud)

*但是,您可以在 jasmine 配置中将 random 设置为 false 以按顺序运行您的规范 - https://jasmine.github.io/setup/nodejs.html