我将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吗?还是我在这里想念东西?
感谢您的帮助!