测试存根服务

时间:2019-02-06 15:49:37

标签: angular unit-testing jasmine stub

在组件OnInit中,我正在获取一些数据:

ngOnInit() {
    this.userService.getUsers().subscribe(users => {
        this.users= users.data;
    });
}

在我的测试中,我对这项服务进行了测试:

const UserServiceStub =  {
  getUsers(): Observable<any> {
    return of([{name: 'john doe'}, {name: 'jane doe'}]);
  }
};

我定义了一个提供程序:

providers: [ { provide: UserService, useValue: UserServiceStub } ],

现在,我要测试是否已进行了调用并且已在元素上设置了数据。

  it('should be initialized with users', fakeAsync(() => {
    const spy = spyOn(UserServiceStub, 'getUsers').and.callThrough();
  }));

看起来我可以调用and.returnValue,但是我希望数据来自存根,因此我需要设置组件的Users属性,以便验证模板中的列表是否为已更新。

我无法将回调传递给callThrough,也没有发现callthough().apply()有用。

如何执行存根?

1 个答案:

答案 0 :(得分:1)

您的spy对象可能是错误的,应该在其方法上获得注入服务UserServicespy的实例。

let userService: UserService;
beforeEach(() => {
  TestBed.configureTestingModule({
    providers: [ { provide: UserService, useValue: UserServiceStub } ],
  });
   userService = TestBed.get(UserService);
});

it('should be initialized with users', fakeAsync(() => {
    const spy = spyOn(userService , 'getUsers').and.callThrough();
}));