angular - this.mobilityService.currentMessage.subscribe 不是角度单元测试中的函数
问题描述
在业力单元测试中,我得到 this.mobilityService.currentMessage.subscribe is not a function 错误
下面是我试图通过服务从另一个组件获取值的 .ts 文件
constructor(private projectService: ProjectService, private teamService: TeamserviceService) {this.getData()}
getData(){
this.projectService.currentMessage.subscribe(data => {
if(data!=null)
{
this.serviceName=data.service_object.serviceName;
this.serviceId = data.service_object.id})
这就是我的服务代码的样子 -
messageSource = new BehaviorSubject(null);
currentMessage = this.messageSource.asObservable();
getProjectList(messageSource: string[]) {
this.messageSource.next(messageSource);
}
constructor(private http:HttpClient) {
getAllProjectService(teamid,serviceid){
return this.http.get(environment.TEST_AUTOMATION_ENDPOINT+'/api/projects-by-team-and-servicestore?
teamId='+teamid+'&serviceStoreId='+serviceid+'&access_token='+this.decaccesstoken);
}
}
我的 .spec 文件我正在创建一个像这样的间谍对象 -
const mockProjectService= jasmine.createSpyObj('projectService', ['getAllProjectService','currentMessage']);
由于“currentMessage”不是服务内的方法,我收到此错误。知道如何订阅服务内的变量吗?
解决方案
将您的服务代码更改为:
messageSource = new BehaviorSubject(null);
currentMessage() {
return this.messageSource.asObservable();
}
getProjectList(messageSource: string[]) {
this.messageSource.next(messageSource);
}
constructor(private http:HttpClient) {
getAllProjectService(teamid,serviceid){
return this.http.get(environment.TEST_AUTOMATION_ENDPOINT+'/api/projects-by-team-
and-servicestore?teamId='+teamid+'&serviceStoreId='+serviceid+'&access_token='+this.decaccesstoken);
}
}
推荐阅读
- java - 为什么使用 OpenJDK+openjfx 的 JavaFX 应用程序在 Ubuntu 16 上失败?
- java - 如何在 Agentspeak 中获取文字的值
- ag-grid-angular - 设置样品表时遇到问题。“无法为 rowModelType 客户端找到匹配的行模型”
- python - 如何在python中使用正则表达式删除除某些特殊字符之外的所有特殊字符
- r - ggplot2 或 plotly 中带有水平条形图的表格
- excel - 自动过滤excel VBA中的多列
- c - 如何在回调函数中不使用 pcap_breakloop() 从 pcap_loop() 或 pcap_dispatch() 返回
- c# - EF Core 迁移为一对多关系添加了错误方向的删除级联
- r - 如何用 BBsolve 求解非线性
- php - Zend Framework 使用内置 PHP 服务器?