在我的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');
  });
});

上面是假的,我不能在任何地方测试,但这应该给你一个想法。

08-07 15:12