如何模拟组件spec.ts文件中的screenName值?虽然我在spec文件中模拟了screenName的值,但它显示为未定义值,只有
sample.service.ts
screenName: string;
sampleComponent.ts
setScreen(){
if (sampleService.screenName === 'CREATE'){
// do this
} else if (sampleService.screenName === 'View') {
// do this
} else {
// do this
}
samplecomponent.spec.ts
it('sample Screen as Create', () => {
limitsService = jasmine.createSpyObj('SampleService', ['screenName']);
limitsService.screenName = 'CREATE';
component.setScreen();
expect(component.setScreen).toBeTruthy();
});
使用providers数组中的useValue覆盖该服务,然后直接使用component.sampleService.screenName = 'View'模拟这些值
beforeEach(() => {
TestBed.configureTestingModule({
...
providers: [{ provide: SampleService, useValue: {} }],
});
...
});
it('sample Screen as Create', () => {
component.sampleService.screenName = 'View';
component.setScreen();
expect(component.setScreen).toBeTruthy();
});