【发布时间】:2020-06-16 06:09:51
【问题描述】:
在我的角度服务中,我使用私有变量并使用 Jest 编写单元测试。 我的服务如下所示:
@Injectable()
export class SampleService {
private value = '';
removeValue(): void {
this.value='';
}
setNewValue(value : string): void {
this.value = value;
}
simpleEmptyMethod() {
}
}
单元测试文件sample.service.spec.ts:
describe('sampleservice', () => {
let sampleService : SampleService;
beforeEach(() => {
TestBed.configureTestingModule({
providers : [SampleService]
});
sampleService=TestBed.get(SampleService);
});
it('should be created', () => {
expect(sampleService).toBeTruthy();
})
it('should remove Value', () => {
sampleService.removeValue();
expect(sampleService.value).toBe('');
})
it('should set new value', () => {
sampleService.setNewValue('abc');
expect(sampleService.value).expect('abc');
})
})
我,收到类似“值未定义”的错误。这可能是因为该值在服务类中是私有的,以及在将来定义方法主体时覆盖空方法的方法是什么。 这种情况如何处理?
【问题讨论】:
-
它是私有的,你不能访问它。将其公开,或者在您的测试类中模拟该值,或者编写一个方法 getValue() 来获取该值并调用该方法。