我有一个测试用例,我希望延迟测试用例中的承诺,如果时间超过500毫秒则拒绝。
实际服务中没有使用$ timeout。
Anyidea如何实现这一目标。
答案 0 :(得分:1)
Jasmine 2.0通过done()函数支持异步操作。在回调函数中使用done作为第一个参数()。另请参阅Jasmine docs。 然后,如果异步操作成功完成,则可以调用done(),或者在失败时调用done.fail()。
假设你有一个返回Promise的函数'doSomething'。并且您希望确保Promise在500ms内完成(否则测试应该失败)。 然后你的测试步骤看起来像这样(简短版本):
it("should return within 500ms", function(done) {
doSomething().then(done, done.fail);
setTimeout(function() { done.fail("doSomething took too long"); }, 500);
});
如果您还想检查Promise履行时传递的结果,那么它可能如下所示:
it("should return within 500ms", function(done) {
doSomething().then(function(result) {
// check result here
done();
}, done.fail);
setTimeout(function() { done.fail("doSomething took too long"); }, 500);
});
答案 1 :(得分:0)
您可以尝试使用setTimeOut函数。 setTimeOut(你的承诺解析函数,500)