Тестирование заглушки - PullRequest
       19

Тестирование заглушки

0 голосов
/ 06 февраля 2019

В компоненте 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 голосов
/ 06 февраля 2019

Ваш spy объект, вероятно, неправильный, вы должны получить экземпляр внедренного сервиса UserService и spy по его методу.

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();
}));
...