Как издеваться над вызовом API в угловых - PullRequest
0 голосов
/ 11 апреля 2019

Я запускаю модульное тестирование по вызову API, хочу смоделировать это и убедиться, что переменная, которая получает данные из этого API, установлена ​​правильно, этот API должен извлекать данные на основе фильтра. Пожалуйста, дайте мне знать, как имитировать из API иесли возможно, как обеспечить выборку только данных, удовлетворяющих критериям?

this.http.post<someVar[]>('/api/records', this.filter)
    .subscribe(res => {
      if (res['status'] == "FAILURE") {
        console.log(res['err']);
        this.spinner.hide();
      } else {

        this.data = res['data'];
}

, чтобы высмеивать из spec.ts

 component.filter.from="2019-03-10T22:00:00.000Z";
 component.filter.to="2019-04-11T21:59:59.000Z";
 mockService.getData=of(mockRecords);//didn't work,so used another one
  mockService.getData.and.returnValue(of(mockRecords));
//either of them worked

Also I will mention the filters
 filter = {
    from : "",
    to : "",
    id: "",
    name: "",
    server: ""
  };

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019
```
let getDataSpy=spyOn(mockService,"getData").and.returnValue(of(mockRecords));
component.filter.from="2019-03-10T22:00:00.000Z";//10th march
component.filter.to="2019-04-11T21:59:59.000Z";//11th april
fixture.detectChanges();
expect(getDataSpy).toHaveBeenCalled();//fails
expect(getDataSpy).toHaveBeenCalledWith(filter);//also fails

0 голосов
/ 11 апреля 2019

Вот один из способов сделать это:

Сначала создайте шпиона:

getDataSpy = spyOn(mockService, "getData").and.returnValue(of(mockRecords));

И ожидайте так:

it('should succeed', () => {
  // ...setup

  // ...action

  expect(getDataSpy).toHaveBeenCalledWith(filter);
});

И не забудьте импортировать of:

import { of } from 'rxjs';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...