Я пытаюсь протестировать поток с помощью 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 !.
.
.
}
}