我试图为我的Angular组件之一编写单元测试,该组件从Web服务调用获取数据。一切运行正常,但是Angular测试平台始终使用真实的服务调用,而不是提供的模拟服务类。我正在使用Angular 6和Jasmine 3。
这是规格文件,如您所见,我正在提供一个模拟服务,该服务返回带有我的预定义数据的可观察对象。
export class MyComponent implements OnInit {
data : any;
constructor(private myService: MyService) { }
ngOnInit() {
this.myService.getData().subscribe(
response =>{
this.data = response;
},
error =>{
console.log("ERROR");
});
}
}
我这里缺少什么吗?当测试平台创建MyComponent时,应该将我的MockService注入组件中,这不是MyService正确吗?我只是想不通,任何帮助都会很棒。
这是我正在测试的简单组件。
class Jobs {
//...
/**
* Tasks of Jobs
* @var $tasks array
*/
protected $tasks;
}
答案 0 :(得分:0)
我敢打赌,第二个compileComponents()
方法运行时beforeEach()
并不完整,因为它是从带有同步lambda的同步beforeEach()
方法运行的-Jasmin应该为您有所帮助如果只是让lambda异步。
从文档中
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ BannerComponent ]
})
.compileComponents();
}));
请参见https://angular.io/guide/testing#compilecomponents-is-async