我正在编写一个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();
。我不确定这类东西的打字稿等价物是什么。似乎没有办法说:“我有一个承诺,我会在这里等到我有同步结果”。答案 0 :(得分:5)
测试看起来应该是这样的:
it('should getFoo', function (done) {
let result = myService.getFoo();
result
.then(rslt => expect(rslt).toBe('foo'))
.then(done);
});
答案 1 :(得分:1)
使用done
回调有效,但您也可以这样做:
(注意return
)
it('should getFoo', function () {
let result = myService.getFoo();
return result
.then(rslt => expect(rslt).toBe('foo'))
});