角度单元测试:覆盖提供程序



我在Providers数组中有以下内容。

{
provide: EnrolmentService,
useValue: {
swapToken: jasmine.createSpy('swapToken')
}
}

除了在一个需要实际调用swapToken((方法的测试用例中,我到处都需要Enrollment服务的jasmine spy for swapToken方法。

有人能建议如何为特定的单元测试覆盖上述提供者吗?

很抱歉我没有彻底阅读代码。所以我假设您发布的提供商是在configureTestingModule方法上的spec文件中指定的

TestBed.configureTestingModule({
declarations: [...],
providers: [{
provide: EnrolmentService,
useValue: {
swapToken: jasmine.createSpy('swapToken')
}
}]
});

或您正在特殊文件模块中导入的...TestingModule

@Injectable()
public class EnrollmentTestingService {
}
@NgModule({
providers: [{
provide: EnrollmentService,
useClass: EnrollmentTestingService
}]
})
public class EnrollmentTestingModule {
}

因为您正在使用jasmine创建mock。

我认为你所要做的就是将这个EnrollmentTestingModule导入到几乎所有的测试模块(规范(中,在一个例外的规范文件中,只需指定提供者

TestBed.configureTestingModule({
declarations: [...],
providers: [{
provide: EnrolmentService,
useValue: {
swapToken: /* something else here */
}
}]
});

最新更新