如果我在该服务的服务和单元测试中添加订阅,我会得到 属性 'subscribe' does not exist on type 'Subscription'?
If i add subscribe in service and unit test of that service, i'm getting Property 'subscribe' does not exist on type 'Subscription'?
这是我的服务
我的-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();
});
如果我在规范文件中添加订阅,则会收到此错误。
属性 'subscribe' 在类型 'Subscription' 上不存在。但是,如果我删除服务中的订阅,则不会显示该错误。
我需要在我的服务中使用订阅。我如何在没有此错误的情况下测试此 post 调用?
如有任何帮助,我们将不胜感激!
您在服务 class 中错误地使用了 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);
}
正如 Daniel 所建议的,我从服务中删除了订阅,并在调用 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);
}
所以我了解到,如果我订阅该服务,它将 return 订阅而不是 Observable,这就是我收到此错误的原因。
这是我的服务
我的-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();
});
如果我在规范文件中添加订阅,则会收到此错误。 属性 'subscribe' 在类型 'Subscription' 上不存在。但是,如果我删除服务中的订阅,则不会显示该错误。
我需要在我的服务中使用订阅。我如何在没有此错误的情况下测试此 post 调用?
如有任何帮助,我们将不胜感激!
您在服务 class 中错误地使用了 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);
}
正如 Daniel 所建议的,我从服务中删除了订阅,并在调用 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);
}
所以我了解到,如果我订阅该服务,它将 return 订阅而不是 Observable,这就是我收到此错误的原因。