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()中完成初始化为止。
。