繁体   English   中英

如何测试返回Promise的方法

[英]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

这会产生“未处理的承诺拒绝”警告,但错误会被抑制并且测试通过。 如何根据我已解决的承诺运行断言?

笔记:

  • .catch()方法似乎不是我想要的。 我不想记录或做任何继续正常程序流程的事情,我想失败测试。
  • 我见过看起来像$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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM