I\'m following this example to make a unit test for service (get request coming from spring app backend) https://angular.io/guide/testing#testing-http-services
Servi
I had to do this to get mine to work:
import { from } from 'rxjs';
then:
return from([expectedTarifs]);
The problem is that when your spy
is being called, it is returning an Array
, and Array
does not have a pipe
function. You need to return an Observable
from your spy
, something like this
const expectedTarifs: Tarif[] =
[{ id: 1, name: 'Tarif1', value: '20' }, { id: 2, name: 'Tarif2', value:'30' }];
httpClientSpy.get.and.returnValue(Observable.of(expectedTarifs));
See how the returnValue
is Observable.of(expectedTarifs)
. Observable.of
creates an Observable
that emits some values you specify as arguments, immediately one after the other, and then emits a complete notification. See the docs
In the latest versions of rxjs
we can use the of
operator
import { of } from 'rxjs';
//... omitting some code here for brevity
const expectedTarifs: Tarif[] =
[{ id: 1, name: 'Tarif1', value: '20' }, { id: 2, name: 'Tarif2', value:'30' }];
httpClientSpy.get.and.returnValue(of(expectedTarifs));
Hope it helps