Así que tengo un módulo llamado A con dos funciones:
function handleCreatedOrder(){
console.log("here")
}
function acquireOrder(){
if(condition) handleCreatedOrder
}
Tengo una prueba que necesita verificar si se está llamando a handleCreatedOrder. Me he burlado del módulo importando primero el módulo import * as acquireOrderWrapper from './module'
Luego, en la prueba, estoy espiando el módulo let handleCreatedOrderSpy = jest.spyOn(acquireOrderWrapper, "handleCreatedOrder")
Cuando intento afirmar expect(handleCreatedOrder).toBeCalled() falla porque el número de llamadas recibidas no coincide. Entiendo que esto se debe a que la burla no es adecuada ya que se llama a console.log de handleCreatedOrder pero la declaración de expectativa falla. ¿Qué estoy haciendo mal?
Mis pruebas son actualmente como
describe("handle acquireOrder success responses", () => {
const reactRedux = { useDispatch, useSelector }
const useDispatchMock = jest.spyOn(reactRedux, "useDispatch")
test("test1", async () => {
let handleCreatedOrderSpy = jest.spyOn(acquireOrderWrapper, "handleCreatedOrder")
await acquireOrder()
expect(handleCreatedOrderSpy).toBeCalled()
}
Creo que lo que debe hacer es crear un espía en la función handleCreatedOrder primero y luego llamar a la función adquirirOrder dentro de su prueba.
Luego, se llamará al espía una vez que ejecute la función adquirirOrder y su prueba debería pasar. Por lo general, desarrollo mi interfaz con angular y typescript, pero para reactJS debería verse similar.
test('test if function was called', async () => {
jest.spyOn(component, 'handleCreatedOrder').mockImplementation();
await acquireOrder();
expect(component.handleCreatedOrder).toHaveBeenCalled();
}
es posible que deba agregar un detector de cambios en su prueba después de ejecutar la función adquirirOrder. En typescript, generalmente agrego fixture.detectChanges después de ejecutar la función como esta
fixture.detectChanges();
También noté que falta () después de su función.
function acquireOrder(){
if(condition) handleCreatedOrder()
}