我对ngOnInit有一个可观察的结果,现在我正试图为此编写测试,但这似乎不起作用。
这是我要测试的班级
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
if (player.getPos().equals(x + " " + y)) {
System.out.print(player.getSymbol()); // print "@"
} else if {
for (int v = 0; v < vampires.size(); v++) {
if (vampires.get(v).getPos().equals(x + " " + y)) {
System.out.print(vampires.get(v).getSymbol()); // print "v"
}
}
} else {
System.out.print(".");
}
System.out.println();
}
}
}
这是我对此进行的单元测试
ngOnInit() {
this.myService.updates$.pipe(takeUntil(unsusbribe$))
.subscribe(update => {
this.feeds = update;
})
}
此测试失败,错误为it('should set feeds when an update is sent', fakeAsync(() => {
const update = 'fakeUpdate';
component.ngOnInit();
const serviceSpy = spyOn(myService, 'updates$').and.returnValue(timer(500).pipe(mapTo(update)))
tick(500);
expect(serviceSpy).toHaveBeenCalled();
}))
任何人都可以帮我在这里解决问题。
答案 0 :(得分:0)
使用间谍服务的正确方法。请尝试这个。
it('should set feeds when an update is sent', fakeAsync(() => {
const update = 'fakeUpdate';
const serviceSpy = spyOn(myService, 'updates$');
serviceSpy.and.returnValue(timer(500).pipe(mapTo(update)))
tick(500);
expect(serviceSpy).toHaveBeenCalled();
}))