Я пишу контрольный пример в angular. Я написал условие, если res.length === 1
перенаправить на страницу сведений. (this.router.navigate(['details', id])
). Я получаю id
из первого массива объекта в ответе тела как const id = res[0].id
. Обе эти строки не включены в мое покрытие кода. Может кто-нибудь сообщить мне, где я допустил ошибку?
Я получаю Expected spy navigate to have been called with [ [ '/product-details', 'SAAASD0001' ] ] but it was never called.
app.component.spe c .ts
let router = {navigate: jasmine.createSpy('navigate')};
TestBed.configureTestingModule({
imports: [RouterTestingModule],
providers: [
{ provide: Router, useValue: router }
]
})
it('should take data from store', () => {
const mockData = [
{
id: '123',
name: 'Stackoverlow',
}
]
expect(component.getList).toEqual(mockData);
const productId = mockData[0].id;
expect(router.navigate).toHaveBeenCalledWith(['/details', id]);
});
app.component.ts
getList() {
this.store
.select('content', 'catalogue')
.pipe(takeUntil(this.onDestroy$))
.subscribe((res) => {
Iif (res.length === 1) {
// this line doesn't cover
const id = res[0].id;
// this line doesn't cover
this.router.navigate(['details', id]);
} else {
this.list = category(res);
}
});
}