请原谅我的无知,我是Angular的新手。
在我目前的情况下,我有一个服务,该服务具有进行http调用的功能,并根据请求的有效负载返回true或false。问题是我不想模拟该函数返回的结果(是或否),我只是想模拟HTTP响应,然后让该函数确定这是真还是假。
service.ts
dothing(a: string, b: string): Observable<boolean> {
return this.http.post('/route/', {'a': a, 'b': b})
.map((payload => {
if(payload['thingImLookingFor']) {
return true;
} else {
return false;
}
}
}
service.spec.ts
it('should call dothing via http post', () => {
inject([Service, HttpTestingController, HttpClient],
(service: Service, backend: HttpTestingController, http: HttpClient) => {
service.login('foo', 'bar').subscribe((next) => {
console.log('We Never Reach Inside Here Because I Never Log And The Test Passes');
expect(next).toEqual(true);
});
const req = backend.expectOne('/route/');
req.flush({
error: '',
thingImLookingFor: false
});
});
});
我想伪造该函数中的HTTP响应,但是我希望我的函数仍然可以将其分开,并确定它是否具有所需的内容,因为这是我要确保其正常运行的功能。我该怎么办?
我尝试将其拆分为多个功能,但最终结果很丑陋,实质上导致了对该功能所属工作流的完全重写。如果那是唯一的办法,我可以并且会做到,但是我想确保我不会错过一个更简单的解决方案