Angular 单元测试,针对可观察到的错误
Angular unit testing, for Observable errors
我正在尝试解决服务调用的代码覆盖率错误。
我遵循两种方法,但犯了一些错误。
下面是我编写测试用例的方法
setPrefixSuffixDetails(): void {
this.prefixSuffixDetailSubscription = this.profileBeneficiaryService.getPrefixSuffixDetails()
.subscribe(data => {
if (data.body.prefixlist.length > 0) {
this.prefixConfig.options = data.body.prefixlist;
}
if (data.body.suffixlist.length > 0) {
this.suffixConfig.options = data.body.suffixlist;
}
}, error => {
this.loadingData = false;
this.notificationService.addNotications(error);
});
}
为了测试,我正在创建提供者,下面是我的提供者
{ provide: ProfileBeneficiaryService, useClass: ProfileServiceStub},
{provide: ProfileBeneficiaryService, useClass: ProfileBenficiaryErrorStub},
一个是成功调用,另一个是错误调用。
beforeEach(async(() => {
TestBed.configureTestingModule({ .............
class ProfileBenficiaryErrorStub {
getPrefixSuffixDetails = function () {
return Observable.throw(Error('Test error'));
}}
class ProfileServiceStub {
getPrefixSuffixDetails = function () {
return Observable.of(this.data);
}
}
但问题是当我使用两个提供者时它只覆盖错误,如果我不包括错误提供者,它覆盖成功
请让我知道我在使用提供商时哪里做错了。
此外,我尝试使用 spyOn 方式并遇到错误
it('should check for the getPrefixSuffixDetails error call ', () => {
spyOn(ProfileBeneficiaryService,'getPrefixSuffixDetails').and.returnValue(Observable.throw('error'));});
以下解决方案对我有用
it('should check for the getPrefixSuffixList error call ', () => {
spyOn(profileDependentsService, 'getPrefixSuffixList').and.returnValue(Observable.throw('error'));
component.getPrefixSuffixList();
expect(profileDependentsService.getPrefixSuffixList).toHaveBeenCalled();
});
我正在尝试解决服务调用的代码覆盖率错误。 我遵循两种方法,但犯了一些错误。
下面是我编写测试用例的方法
setPrefixSuffixDetails(): void {
this.prefixSuffixDetailSubscription = this.profileBeneficiaryService.getPrefixSuffixDetails()
.subscribe(data => {
if (data.body.prefixlist.length > 0) {
this.prefixConfig.options = data.body.prefixlist;
}
if (data.body.suffixlist.length > 0) {
this.suffixConfig.options = data.body.suffixlist;
}
}, error => {
this.loadingData = false;
this.notificationService.addNotications(error);
});
}
为了测试,我正在创建提供者,下面是我的提供者
{ provide: ProfileBeneficiaryService, useClass: ProfileServiceStub},
{provide: ProfileBeneficiaryService, useClass: ProfileBenficiaryErrorStub},
一个是成功调用,另一个是错误调用。
beforeEach(async(() => {
TestBed.configureTestingModule({ .............
class ProfileBenficiaryErrorStub {
getPrefixSuffixDetails = function () {
return Observable.throw(Error('Test error'));
}}
class ProfileServiceStub {
getPrefixSuffixDetails = function () {
return Observable.of(this.data);
}
}
但问题是当我使用两个提供者时它只覆盖错误,如果我不包括错误提供者,它覆盖成功
请让我知道我在使用提供商时哪里做错了。
此外,我尝试使用 spyOn 方式并遇到错误
it('should check for the getPrefixSuffixDetails error call ', () => {
spyOn(ProfileBeneficiaryService,'getPrefixSuffixDetails').and.returnValue(Observable.throw('error'));});
以下解决方案对我有用
it('should check for the getPrefixSuffixList error call ', () => {
spyOn(profileDependentsService, 'getPrefixSuffixList').and.returnValue(Observable.throw('error'));
component.getPrefixSuffixList();
expect(profileDependentsService.getPrefixSuffixList).toHaveBeenCalled();
});