对ngOnInit中的订阅进行单元测试不起作用

时间:2019-03-07 11:16:52

标签: angular jasmine karma-jasmine angular-unit-test

我对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(); }))

任何人都可以帮我在这里解决问题。

1 个答案:

答案 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(); 
  }))