Jasmine - 如何设置描述块的超时?

时间:2017-01-02 10:52:59

标签: javascript jasmine karma-jasmine

我有一个写得不好的类,只有在短暂的超时后才能初始化。 (它依赖于第三方加载,因此提供修改代码毫无意义。谢谢) 然而,它需要进行单元测试。

我现在所拥有的是以下结构:

describe('my tests', function() {

    var timeoutPromise = function () {
        /... return promise .../   
    } 

    it('test1', function (done) {
        timeoutPromise.then(function() {
            expect(...);
            done();
        });
    });

    it('test2', function (done) {
        timeoutPromise.then(function() {
            expect(...);
            done();
        });
    });

});

这样我确保所有测试在几毫秒超时后运行。 是否有办法使整个描述块仅在超时后运行? 像

这样的东西
describe('my tests', function(done) {
      it(...);
      it(...);
      done();
}

1 个答案:

答案 0 :(得分:0)

没有describe()done回调。来自Jasmine 2.5 docs

  

beforeAllafterAllbeforeEachafterEachit的调用可以采用可选的单个参数,当异步工作是完整。

但是,您可以在与beforeEach()所属的it()块相同的级别describe('your tests', function() { var timeoutPromise = new Promise(function(resolve, reject){ setTimeout(resolve, 4000); }); // execute timeoutPromise and wait for it to resolve ... beforeEach(function(done) { timeoutPromise.then(function() { // timeout resolved, test initialization in this block done done(); }); }); // for all following it()s the beforeEach() needs to complete it('test1', function () { expect(...); }); it('test2', function () { expect(...); }); // ... }); 进行一次初始化。

以下代码将满足您的要求。它是内联评论:

store.dispatch(responseData)