【问题标题】:Angular 8 karma test both success and error of Observable from serviceAngular 8 karma 从服务中测试 Observable 的成功和错误
【发布时间】:2021-06-26 14:55:24
【问题描述】:

我正在测试 MyComponent,它在 ngOnInit 中调用一个返回 observable 的服务方法:

    this.myService.getMyData().subscribe(
        (data) => {
            //do something
        },
        (error) => {
            //do something - error
        }
    );

我在getMyData 上安装了一个间谍,这样:

mySpy = spyOn(myService, 'getMyData').and.returnValue(of(mockObject));

这涵盖了订阅的“成功分支”。但我还需要涵盖“错误分支”。我试过这样做:

spyOn(myService, 'getMyData').and.returnValue(throwError(new Error('Error')));

当然,Jasmine 告诉我getMyData 已经被监视了。如何覆盖两个分支?

【问题讨论】:

    标签: testing karma-jasmine angular8 karma-coverage


    【解决方案1】:

    您所做的是正确的,但是您不能在同一个测试用例中多次监视同一个服务。

    因此您需要编写第二个测试用例来涵盖您的错误场景。

    类似这样的:

    it('should run success scenario', () => {
       mySpy = spyOn(myService, 'getMyData').and.returnValue(of(mockObject));
    })
    
    it('should run error scenario', () => {
       mySpy = spyOn(myService, 'getMyData').and.returnValue(throwError(new Error('Error')));
    })
    

    【讨论】:

    • 嗨,谢谢,既然我在 beforeEach 中声明了我的间谍,我应该删除那里的声明并将其移动到每个测试用例中,对吧?
    • 你也可以这样做。
    猜你喜欢
    • 2019-12-03
    • 2017-09-25
    • 1970-01-01
    • 2021-11-30
    • 2022-07-27
    • 2018-01-31
    • 2018-01-24
    • 2021-06-20
    • 2019-09-20
    相关资源
    最近更新 更多