Jest Ожидается, что фиктивная функция была вызвана, но она не называлась ошибкой - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь протестировать поток с помощью Jest, но тест не выполняется при ожидании (). ToHaveBeenCalledTimes () для функции, которая должна вызываться. Я пытался просмотреть другие посты, но не решил .. как новичок ie в Jest Я надеялся, что кто-то может взглянуть на эту ошибку и предложить, что идет не так.

Модульный тест для контроллера модуль

 describe('controller tests', () => {
      beforeEach(() => {
        jest.restoreAllMocks();
      });

      test('component ready fetches data', function() {
        const controller = getTesTController();    /* Create a controller object*/
        let dummyDom = document.createElement('div');
        controller.createComponents(dummyDom); /* act */
        expect(controller.onResponse).toHaveBeenCalledTimes(1); /* createComponents() invokes onResponse*/
        });
    }

Создание тестовых данных

export function getTestController(): Controller {
  let controller: Controller;

  let mockRequest = function(requestParams: RequestParams) {
    // mock server call to fetch data and pass to controller.
    controller.onResponse(mockData); /* onResponse of controller called */
  };


  controller = new Controller(
    mockRequest  /* Controller calls this */
  );

  controller.createComponents = jest.fn( controller.createComponents.bind(controller));
  controller.onResponse = jest.fn(controller.onResponse.bind(controller));

  return controller;
}

Модуль контроллера

public class Controller{
private mockRequest = (requestParams) => void;

     Controller(mockActivityRequest){
        // constructor
        this.mockRequest = mockRequest;
        }

        public createComponents(){
        // Api invoked in test - executes the callback passed,that in-turn calls onResponse
        mockRequest(requestParams);
        }

        onResponse(ResponseData){
        // This is expected to be called - jest fails on this check !.

        .
        .
        }
}
...