在我的Angular2应用程序中有一个服务;它包含一个静态引用属性。
export class MyService {
public static OneProperty: ClassA;
}
这里是我要在ts文件中测试的方法的一个示例实现。
export class TestComponent() {
oneProperty: User;
public NumberOfUsers(): string {
this.oneProperty = MyService.OneProperty.someThing;
return this.oneProperty;
}
}
如何为测试用例模拟静态变量中的数据?每当我试图模拟useclass/usevalue格式的数据时,我就得到一个未定义的myservice.oneproperty值。
最佳答案
你能举个例子说明你是如何尝试useclass/usevalue的吗?
这应该有效:
class MockMyService {
public static oneProperty = 'mock';
}
那么在你的测试中:
describe('TestComponent', () => {
beforeEach(() => TestBed.configureTestingModule({
...
providers: [
{provide: MyService, useClass: MockMyService},
]
});
it('should work with mock service', () => {
const mockService = TestBed.get(MyService);
expect(mockService.oneProperty).toEqual('mock');
});
});
上面是假的,我不能在任何地方测试,但这应该给你一个想法。