如何使用jasmine在组件规范中模拟服务文件中的字符串变量



如何模拟组件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();
});

最新更新