Angular5 - протестировать функцию, которая вызывает http-сервис внутри - PullRequest
0 голосов
/ 04 июня 2018

Мне нужно проверить эту функцию.

Когда я щелкаю эту функцию getallproductcomponent(), выполняю эту сервисную функцию getallproductservice() и возвращаю все продукты.Любая идея, пожалуйста, как это проверить?

  getallproductcomponent() {
    this.ws.getallproductservice().subscribe(
      item=> {
        this.item= item;
      }
    );
  }

Только getallproductservice Я тестирую, как этот код, но как тестировать компонент.

it('testing',
    async(inject([ProductService], (service: ProductService) => {
        TestBed.get(MockBackend).connections.subscribe(
            (connection: MockConnection) => connection.mockRespond(new Response(
                new ResponseOptions({
                                    })
            ))
        );
        service.getallproductservice().subscribe(items => {
            expect(items[0].alarmdesc).toEqual('call');
        });
    })))

1 Ответ

0 голосов
/ 04 июня 2018

Простой способ

let ws: ServiceName;

//in beforeEach    
ws= TestBed.get(ServiceName);

it('save should work', () => {
     spyOn(ws, 'getallproductservice').and.returnValue(
        of({})
      );;
     component.getallproductcomponent();
     expect(ws.getallproductservice).toHaveBeenCalled();
});

Проверка наблюдаемых

import { marbles } from 'rxjs-marbles';
import { of } from 'rxjs/observable/of';

it(
    'should return the search result',
     marbles(marble => {
         const expectedResult={ item: {//something to match the api}}
         spyOn(ws, 'getallproductservice').and.returnValue(
            of(expectedResult)
          );
        component.getallproductcomponent();
        expect(component.item).toEqual(expectedResult.item);
      })
...