[英]How to test a method returning a Promise
我正在编写一个Angular 2 RC5应用程序,并使用Karma和Jasmine进行单元测试。
我有一个返回Promise<Foo>
(它在对angular的http.post的调用之上) 我希望在完成之后运行一些断言。
像这样的东西不起作用
let result = myService.getFoo();
result.then(rslt => expect(1+1).toBe(3)); // the error is lost
这会产生“未处理的承诺拒绝”警告,但错误会被抑制并且测试通过。 如何根据我已解决的承诺运行断言?
笔记:
$rootScope.$digest();
代码$rootScope.$digest();
。 我不确定这类东西的打字稿等价物是什么。 似乎没有办法说:“我有一个承诺,我会在这里等到我有同步结果”。 测试看起来应该是这样的:
it('should getFoo', function (done) {
let result = myService.getFoo();
result
.then(rslt => expect(rslt).toBe('foo'))
.then(done);
});
使用done
回调有效,但您也应该能够这样做:
(注意return
)
it('should getFoo', function () {
let result = myService.getFoo();
return result
.then(rslt => expect(rslt).toBe('foo'))
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.