Estoy tratando de escribir un caso de prueba en el que me estoy burlando de addEventListener y después de eso debería invocar la función de devolución de llamada, pero recibo este error: expect(jest.fn()).toBeCalledWith(...expected) Expected: "clic", cualquier número de llamadas: 0
Entonces, cuando eliminé el botón de mi archivo javascript y simplemente experimenté para hacer clic en el documento, mi caso de prueba funcionó bien (cambié el caso de prueba y también usé document.addEventlistener en lugar de element). Entonces, mi lógica de llamada simulada es correcta, pero no funciona si uso el botón. Cualquiera tiene idea de cómo se invocará el botón en la prueba de broma.
Aquí está mi archivo test.js
let btn = document.createElement("button"); btn.type = "button"; let buttonNode = document.createTextNode("submit"); btn.appendChild(buttonNode); document.body.appendChild(btn); function init() { btn.addEventListener("click", () => { this.instance(); }); } function instance() { console.log("Instance method called"); } init(); const exportFunctions = { init, instance, }; module.exports = exportFunctions;Aquí está mi archivo ejemplo.test.js
const prueba1 = requerir("./prueba");
test("It should pass", () => { document.body.innerHTML = ` <button type="button">Submit</button> `; const element = document.getElementsByTagName("button")[0]; const instanceMock = jest.spyOn(test1, "instance"); element.addEventListener = jest .fn() .mockImplementationOnce((event, callback) => { callback(); }); test1.init(); expect(element.addEventListener).toBeCalledWith( "click", expect.any(Function) ); expect(instanceMock).toBeCalledTimes(1); });