我在服务的单元测试期间遇到了问题 这是我的测试用例
it("updateUserProfile() should update user profile", async(() => {
mockBackend.connections.subscribe((connection: MockConnection) => {
let responseOpts = new ResponseOptions({ body: JSON.stringify({ username: "testuser" }) });
connection.mockRespond(new Response(responseOpts));
});
let obj = {
callback: (r) => {
expect(r.username).toBe("testuser");
}
};
spyOn(obj, "callback").and.callThrough();
service.updateUserProfile({}, obj.callback);
expect(obj.callback).toHaveBeenCalled();
}));
这是我的服务
updateUserProfile(user: Profile, callback?: Function): void {
let sub = this.http.patch(url, user, { headers: this.getHeaders() }).subscribe(r => {
callback(r);
if (sub) sub.unsubscribe();
});
}
在这种情况下它正常工作我的spy
返回true表示回调被触发但我的callback
中的代码总是未定义我也想测试响应。
答案 0 :(得分:0)
我有问题的解决方案
updateUserProfile(user: Profile, callback?: Function): void {
let sub = this.http.patch(url, user, { headers: this.getHeaders() }).subscribe(r => {
callback(r.json());
if (sub) sub.unsubscribe();
});
}
我正在调用callback
而没有将响应解析为json,它应该至少调用我的callback
响应。将callback(r)
更改为callback(r.json())
后,我将数据存入我的回调中。