Jasmine - 等待异步库在执行测试之前完全加载

时间:2016-02-23 14:36:20

标签: javascript asynchronous jasmine

我的项目包含一个使用异步XMLHttpRequest加载数据的外部库。加载时间可在200ms至10000ms之间变化。

我希望Jasmine只在该库加载完成后才能执行测试。

我对Jasmine中的Async测试有点困惑。我想只有一个超时会在所有测试之前等待,然后同步执行每个测试。

有可能吗?我有类似下面的内容,但它不起作用。

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...
});

编辑:我必须提到我想用真实数据执行测试。

1 个答案:

答案 0 :(得分:0)

我找到了一种方法来做我想做的事情。在我的问题中,我非常接近正确答案。

请注意,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...
});

See Jasmine doc