如何强制期望在订阅的Jest Angular测试中进行检查?

时间:2019-07-12 09:04:52

标签: angular unit-testing rxjs jestjs observable

我将Jest集成到我的Angular中,到目前为止,测试运行顺利。但是现在我遇到了一个小问题,无法解决。 我有一个主要服务,我正在为此编写测试,它具有API服务依赖性(执行获取和发布)。我订阅了返回sendRequest的{​​{1}}方法,该对象是对我的请求的json响应。

我编写了代码,因此测试失败,但是...每次都通过了,而期望却不成立。

到目前为止,我已经尝试了许多变通办法,但都没有成功: -将我的观察成果转化为承诺 -监视服务中的API调用 -最后(看起来是最广泛的解决方案)使用Observable<obj>

没有任何结果……我总是得到相同的结果:测试成功通过。但这不可能!

done()

在这种情况下,控制台日志显示正确的消息:test('should receive valid response', inject([MyService, HttpTestingController], (service: MyService, httpMock: HttpTestingController, done ) => { const data = '32'; // it's not the value i expect, to make sure that the test fails service.sendRequest(RequestMock).subscribe(resp => { console.log('RESPONSE : ', resp); expect(resp).toBeUndefined(); done(); }); const req = httpMock.expectOne('http://my_server_adress/api'); req.flush(data); httpMock.verify(); })) ,这意味着我们收到了RESPONSE : 32模拟的响应。 因此,它应该在req.flush上返回false吗?还是我在这里想念东西?

感谢您的帮助!

0 个答案:

没有答案