Как издеваться над срезанной трубой в угловой

#angular #unit-testing #jasmine

Вопрос:

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

 lt;tr *ngFor="let item of filteredUsers |slice: (page-1) * pageSize : page * pageSize | searchFilter:searchText  "gt;  lt;tdgt;lt;input type="checkbox" (change)="onChange(item.id, $event.target.checked)"gt;lt;/tdgt;  lt;tdgt;{{item.firstName}}lt;/tdgt;  lt;tdgt;{{item.surname}}lt;/tdgt;  lt;tdgt;{{item.phoneNumber}}lt;/tdgt;  lt;tdgt;{{item.email}}lt;/tdgt;  lt;tdgt;{{item.grossIncome}}lt;/tdgt;  lt;!-- lt;tdgt;{{item.createdDate | date: 'dd/MM/yyyy' }} lt;/tdgt; --gt;   lt;/trgt;  

Код для спецификации

 describe('fetchUserList()',()=gt;{  it('should get list of users from notification service',()=gt;{  // component.pageSize=10;    component.pageOptions=[10,20,50,100];  notificationServiceSpy.fetchUserList.and.returnValue(of({}))  fixture.detectChanges();  expect(component.userList.length).toBe(0);  expect(component.userList).toEqual(component.filteredUsers);  expect(component.userCountLogs.length).toBe(0);  expect(notificationServiceSpy.fetchUserList).toHaveBeenCalled(); })  

Вот код для крючка ngOnit

 ngOnInit() { this.pageOptions=[10,20,50,100]; this.pageSize=this.pageOptions[0]; this.userMappingForm = this.formBuilder.group({  topicId: ['', Validators.required],  users: this.formBuilder.array([]) });   this.fetchNotificationTopic();  this.fetchUserList(); }  

Вот код для извлечения списка пользователей

 fetchUserList() { this.topicList = []; this.notificationService.fetchUserList(null).subscribe((data: any) =gt; {  if (data) {  this.userList =this.filteredUsers= data;   this.userCountLogs = data.length;  }  }, (err: HttpErrorResponse) =gt; {  });  }  

введите описание изображения здесь

Комментарии:

1. SlicePipe должен принимать массив для работы, поэтому я предполагаю, что ошибка возникает из-за того, что вы настраиваете fetchUserList для возврата (наблюдаемого) объекта (пустого в вашем случае, но все еще объекта).

2. Спасибо, что ваше предложение решило мою проблему. Можете ли вы сказать, как я могу обработать HttpErrorResponse в модульном тесте?

3. Проверьте наличие ошибки оператора rxjs throwError.