这是我的服务
我-service.service.ts
export class MyService {
constructor(public http: HttpClient) {}
createChatRecord (data, id) {
let logData = {"hist" : data , "uid": id };
let headers = new HttpHeaders();
headers = headers.set("Content-Type", "application/json");
let options = { headers: headers };
return this.http.post(MY_URL, logData, options)
.subscribe(res => res);
}
}
这是我上述服务的规范文件
我-service.spec.ts
it("It should post", () => {
myservice.createChatRecord(mockData, mockId)
.subscribe((data: any) => {
expect(data).toBe(null);
});
const mockReq = httpMock.expectOne(MY_URL);
expect(mockReq.request.method).toBe("POST");
mockReq.flush(null);
httpMock.verify();
});
如果我在spec文件中添加subscribe,我收到此错误。 属性'订阅'在“订阅”类型上不存在。但是,如果我在服务中删除订阅,则不会显示该错误。
我需要在我的服务中使用subscribe。如何在没有此错误的情况下测试此帖子?
任何帮助将不胜感激!
答案 0 :(得分:1)
您在服务类中错误地使用了subscribe()
。如果删除该用法,您将摆脱该错误。
createChatRecord (data, id) {
let logData = {"hist" : data , "uid": id };
let headers = new HttpHeaders();
headers = headers.set("Content-Type", "application/json");
let options = { headers: headers };
return this.http.post(MY_URL, logData, options);
}
答案 1 :(得分:0)
正如丹尼尔建议的那样,我从服务中删除了订阅,并在我调用createChatRecord的方法中添加了服务。
我的函数调用createChatRecord
myfunction() { // To make call record in service now
this.servicenow.createChatRecord(this.conversationData, this.userId)
.subscribe();
}
<强> myservice.service.ts 强>
createChatRecord (data, id) {
let logData = {"hist" : data , "uid": id };
let headers = new HttpHeaders();
headers = headers.set("Content-Type", "application/json");
let options = { headers: headers };
return this.http.post(MY_URL, logData, options);
}
所以我了解到,如果我在服务中订阅,它将返回订阅而不是Observable,这就是我收到此错误的原因。