模拟服务中的静态数据-angular 2测试

时间:2018-07-13 15:17:30

标签: angular angular2-services angular-test

在我的 ANGULAR 2 应用程序中有一项服务;包含静态引用属性。

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 的未定义值。

1 个答案:

答案 0 :(得分:1)

能否请您举一个示例,说明您如何尝试使用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');
  });
});

上面的内容只是伪的,我无法在任何地方对其进行测试,但这应该可以使您有所了解。