我的项目包含一个使用异步XMLHttpRequest加载数据的外部库。加载时间可以在 200 毫秒到 10000 毫秒之间变化。
我希望 Jasmine 仅在该库完成加载时才执行测试。
我对茉莉花中的异步测试有点困惑。我只想在所有测试之前等待一次超时,然后同步执行每个测试。
可能吗?我有下面这样的东西,但它不起作用。
describe("External library cartovista", function() {
beforeAll(function(done){
var cartovista = window.cartovista;
done();
}, 10000);
it("cartovista should be loaded", function(done) {
expect(cartovista).toBeDefined();
done();
});
it("cartovista component and data working as wanted", function(done) {
//an example of testing over the data
var data = cartovista.data[0]
expect(cartovista.afunction(data)).toBe(true);
done();
});
//etc...
});
编辑:我必须提到我想用真实数据执行测试。
我已经找到了一种方法来做我想做的事情。我的问题非常接近正确答案。
请注意,DEFAULT_TIMEOUT_INTERVAL
应大于setTimeout
间隔
describe("External library cartovista", function() {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 11000;
var cartovista;
beforeAll(function(done){
setTimeout(function() {
cartovista = window.cartovista;
done();
}, 10000);
});
it("cartovista should be loaded", function() {
expect(cartovista).toBeDefined();
});
it("cartovista component and data working as wanted", function() {
//an example of testing over the data
var data = cartovista.data[0]
expect(cartovista.afunction(data)).toBe(true);
});
//etc...
});
见茉莉花文档