Angular 2 订户错误的业力单元测试

Angular 2 karma unit test for subscriber error

虽然 运行 代码覆盖率测试,但我注意到我没有涵盖订阅者函数的错误处理。 要测试的功能:

 getVersion() {
    return this.aboutService.getAPIVersion()
        .subscribe(
            info => {
                console.log('info', info);
            },
            error => {
                console.log('error', error);
            }
        );
}

这是组件中的函数,它正在从服务中调用函数。我设法使用 mockBackend abd MockError 为来自服务的函数编写了单元测试,但我不知道如何使用 wrapper(caller) 函数来做到这一点。

到目前为止,我用 class 模拟了服务,但我只涵盖响应而不是错误:

class AboutServiceStub {
    getAPIVersion = jasmine.createSpy('getAPIVersion').and.callFake(
        this.fakedGetAPIVersion
    );

    fakedGetAPIVersion() {
        console.log('fakedGetAPIVersion');
        return Observable.of(new Object(version))
            .map(version => JSON.parse(JSON.stringify(version)));
    }
}

我有同样的场景,我需要为一个测试用例测试错误用例(为了代码覆盖率)。我遵循的方法是 1.Get测试注入的服务如下

aboutService = fixture.debugElement.injector.get(AboutService);

2.Now 使用

覆盖方法
aboutService.getAPIVersion = () => Observable.throw('error');

所以对于这个特定的测试,该方法已被覆盖。 确切的代码可能不起作用,这是我记得的事情。