Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jasmine-如何为描述块设置超时?_Javascript_Jasmine_Karma Jasmine - Fatal编程技术网

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

Javascript Jasmine-如何为描述块设置超时?,javascript,jasmine,karma-jasmine,Javascript,Jasmine,Karma Jasmine,我有一个写得很差的类,只有在短时间超时后才能初始化。(它依赖于第三方加载,因此提供修改代码是毫无意义的。谢谢) 然而,它需要进行单元测试 我现在拥有的是以下结构: describe('my tests', function() { var timeoutPromise = function () { /... return promise .../ } it('test1', function (done) { timeoutP

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

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

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();
}
没有
descripe()
级别
done
回调。从:

调用
beforeach
afterEach
beforeach
afterEach
、以及
它可以采用一个可选的单参数,该参数应在异步工作完成时调用

但是,您可以在与它们所属的
it()
块相同级别的
beforeach()
中执行一次初始化

以下代码将满足您的要求。它是:

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

    // ...

});

您可以在每个(函数(完成){…})
块之前创建一个
setTimeout(完成,1000)。它将在所有
It()
sb之前运行,但您将指望每个测试在不到1000毫秒的时间内完成……不,该超时将阻止所有测试,直到在
beforeach()中完成初始化为止。