我有一个测试用例,我想延迟测试用例中的 promise ,并在时间超过 500 毫秒时拒绝。
实际服务中并没有使用$timeout。
知道如何实现这一点。
最佳答案
Jasmine 2.0通过done()函数支持异步操作。使用done作为it()回调中的第一个参数。另请参阅Jasmine docs 。 然后,如果异步操作成功完成,您可以调用done();如果失败,您可以调用done.fail()。
假设您有一个返回 Promise 的函数“doSomething”。并且您希望确保 Promise 在 500 毫秒内完成(否则测试应该失败)。 那么您的测试步骤可能如下所示(简短版本):
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);
});
关于angularjs - 如何在 Jasmine 2.0 中测试延迟的 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39759584/