【发布时间】:2018-03-02 21:15:20
【问题描述】:
我正在使用 Karma/Jasmine 来运行许多规范文件。我的测试使用了一些全局函数。一些测试模拟了其他测试所依赖的全局函数。由于测试是异步运行的,因此某些测试会失败,因为全局函数的预期行为会被其他测试改变。
有没有办法按顺序运行测试?
【问题讨论】:
标签: testing webpack jasmine karma-runner
我正在使用 Karma/Jasmine 来运行许多规范文件。我的测试使用了一些全局函数。一些测试模拟了其他测试所依赖的全局函数。由于测试是异步运行的,因此某些测试会失败,因为全局函数的预期行为会被其他测试改变。
有没有办法按顺序运行测试?
【问题讨论】:
标签: testing webpack jasmine karma-runner
在 jasmine.json 中将“随机”设置为 false
文件应该添加到spec/support/jasmine.json
【讨论】:
jasmine.getEnv().configure({ random: false });
我认为异步测试不会同时运行两个测试。这种副作用很可能会发生,因为您没有在单个测试结束后重置全局函数。如果您在每次测试后不恢复全局函数,并且下一个运行的测试(可能是套件中的任何单个测试)如果依赖于相同的函数可能会失败。
例如(使用 sinon)
describe("A suite", function() {
beforeEach(function() {
sinon.stub(someGlobal, 'someFunc')
});
afterEach(function() {
someGlobal.sumFunc.restore()
})
it("uses global function", function() {
...
});
});
*但是,您可以在 jasmine 配置中将 random 设置为 false 以按顺序运行您的规范 - https://jasmine.github.io/setup/nodejs.html。
【讨论】:
标志--random=false 将按顺序运行测试。我有实现这一目标的脚本:
"test": "ENV=dev && db-migrate --env dev up && jasmine-ts --random=false && db-migrate reset --env dev",
【讨论】: