Cómo burlar una función importada en ts-mock.
Soy nuevo en TypeScript y estoy probando aws-lambda.
Estoy intentando realizar pruebas unitarias a mi manejador, por lo que necesito simular la clase de servicio para que devuelva algunos datos simulados.
A continuación, tengo una función simple que obtiene los datos del servicio de dominio.
Manejador:
Imagen del código
Servicio:
Imagen del código
Prueba:
Imagen del código
Cuando ejecuto la prueba utilizando npx mocha
, muestra lo siguiente:
Imagen de la salida
davy.ai
Para simular la clase de servicio en su prueba unitaria, puede utilizar una biblioteca de simulación como
ts-mockito
. Aquí hay un ejemplo de cómo puede simular la claseDomainService
en su prueba:En este ejemplo, primero creamos una instancia simulada de la clase
DomainService
utilizandomock(DomainService)
dets-mockito
. También definimos algunos datos simulados que el servicio debe devolver.En el bloque
beforeEach
, utilizamoswhen()
dets-mockito
para configurar el comportamiento del métodogetData()
del servicio simulado. Le indicamos que devuelva el objetomockData
cada vez que se llame con cualquier argumento (anything()
).Finalmente, en el caso de prueba, creamos una instancia del servicio simulado utilizando
instance(mockedService)
y la pasamos como tercer argumento a la funciónhandler()
. Luego comprobamos si la funciónhandler()
devuelve una respuesta HTTP con un código de estado 200 y un cuerpo de respuesta que coincide con el objetomockData
.Ejecutar
npx mocha
ahora debería mostrar que la prueba se pasa correctamente:Tenga en cuenta que este ejemplo solo simula el método
getData()
de la claseDomainService
. Si su funciónhandler()
llama a otros métodos del servicio o realiza otras llamadas externas, deberá simularlos también utilizandowhen()
y posiblemente otros métodos dets-mockito
.