шпионы должны быть созданы в функции до или в спец. c angular - PullRequest
0 голосов
/ 18 марта 2020

У меня есть эта закрытая функция:

 private GetChargesByClient(clientId: number): Observable<any[]> {
const ds = new Date();
const dateTocompare = new Date(ds.setFullYear(ds.getFullYear() - 1));
return this.getCharges(id).pipe(map(res => res.filter(x => x.date >= dateTocompare)));

}

, и я написал для нее модульный тест:

describe('getAllCharges', () => {
 const _response: any[] =[
    {
        "type": "Ongoing ",
        "date": 1562108400000,
        "totalPayment": "11.54",
        "document": 37
    },
    {
        "type": "Ongoing ",
        "date": 1559689200000,
        "totalPayment": "11.04",
        "document": 37
    }
];

 it('then', (done) => {
      const service: chargesService = TestBed.get(chargesService);
      spyOn<any>(service, 'getCharges').and.returnValue(of(_response));
      const res = service['GetChargesByClient'](130).subscribe(() => done);
      expect(res).toBe(null);
    });
    });

, но когда я запускаю тест, я получить ошибку

шпионы должны быть созданы в функции before или spe c

У меня есть другие тесты для частных методов, и они запускаются ОК. Может ли кто-нибудь определить, что мне не хватает

1 Ответ

0 голосов
/ 18 марта 2020

Одна вещь, res будет объектом подписки, а не выдаваемым значением (то есть не нулевым). Другой, я не уверен, какова цель done здесь (это может сбить Жасмин).

Попробуйте

it('could use a more descriptive expectation', () => {
    const service: chargesService = TestBed.get(chargesService);
    spyOn<any>(service, 'getCharges').and.returnValue(of(_response));

    service['GetChargesByClient'](130)
        .subscribe((result) => expect(result).toBeNull());
});
...