现在我有以下代码......
it("takes a long time", function(done) {});
问题是当它超时我收到以下消息......
错误:超时 - 超时内未调用异步回调 由jasmine.DEFAULT_TIMEOUT_INTERVAL指定。
我可以将此邮件更改为更具体的内容吗?
答案 0 :(得分:0)
这是关于测试的错误,而不是您正在测试的代码的错误。如果您的测试已正确编写,则不应遇到该错误。测试本身是超时的。如果您正在编写测试以查看某些代码是否超时,那么您可以编写测试来处理该问题,而不是因为您未及时调用done()
而导致测试错误。
// this function times out if passed "true" as second argument
function testThis(done, shouldTimeout) {
setTimeout(function() {
shouldTimeout || done();
}, 500);
}
it("timed out", function(done) {
var timedOut = false;
setTimeout(function() {
testThis(function() {
// this shouldn't be called because we're telling `testThis` to timeout
timedOut = true;
}. true);
});
setTimeout(function() {
expect(timedOut).toBeFalsy();
done();
}, 505);
});
如果您需要等待很长时间以查看是否超时,您可以通过更改jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
Jasmine确实拥有setInterval
和setTimeout
a mock,可让您同步运行该代码,并节省所有浪费的时间等待。