Кто-нибудь тестировал обработку на стороне сервера DataTables с помощью шутливого тестирования (угловой 6-интерфейс) - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь выяснить, как имитировать вызов ajax внутри серверной обработки Datatables

 $('#datatables').DataTable({
      iDisplayLength: 10,
      sPaginationType: 'full_numbers',
      bServerSide: true,
      ajax: (dataTablesParameters: any, callback) => {
        const info = $('#datatables')
          .DataTable()
          .page.info();
        this.invoiceService
          .getInvoiceByUser()
          .subscribe(
            data => {
              this.tableData = data.data;
              callback({
                recordsTotal: data.recordsTotal,
                recordsFiltered: data.recordsTotal,
                data: []
              });
            },
            error => {
              this.tableData = [];
            }
          );
      }
    });

В приведенном выше коде я вызываю метод "getInvoiceByUser" внутри моей пользовательской службы для получения значений из базы данных. Тем не менее, код работает нормально и дает ожидаемый результат. То, что я изо всех сил пытаюсь пройти тестовый кейс. Ниже приведен код моего теста.

  it('should call load invoice data when role equals to admin in ngOnInit', () => {


// Create mock function   
const invoiceServiceSpy = spyOn(
  (component as any).invoiceService,
  'getAllInvoices'
).and.returnValue(Observable.of(true));

component.ngOnInit(); // calling this function since the DataTable render is happening at the ngOnit();

expect(userServiceSpy).toHaveBeenCalled();
expect(invoiceServiceSpy).toHaveBeenCalled();
  });

Я вызываю component.ngOnit (), поскольку процесс DataTable происходит в ngOnit. Однако тест завершается ошибкой: «Ожидается, что шпион был вызван, но не был вызван.

Я пробовал это, издеваясь над домом, столом и многими другими способами, но все еще не повезло. Кто-нибудь сталкивался с такой же проблемой и разобрался?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...