Jest puede leer archivos de 3 formas:
- Archivos con la extensión .test.js
- Archivos con la extensión .spect.js
- Archivos dentro de la carpeta tests
npm i -D supertest @types/supertest jest @types/jest ts-jestnpx ts-jest config:initConfiguración en el package.json para ejecutar tests
"test": "jest --detectOpenHandles"Para evitar llenar nuestra base de datos con los objetos que creamos en nuestros tests podemos limpiarla de esta forma
const clearDB = async () => {
try {
await db.sync({ force: true })
console.log('Datos eliminados correctamente')
exit()
} catch (error) {
console.log(error)
exit(1)
}
}
// detectar el comando de nuestra terminal para ejecutar la función
if (process.argv[2] === '--clear') {
clearDB()
}Para ejecutar ese código de forma automática lo que podemos hacer es colocar el comando reservado "pretest", el cual se ejecuta automaticamente antes del comando "test" ,es decir, no es necesario llamarlo desde nuestra terminal
"pretest": "ts-node ./src/data --clear"Es una metrica utilizada para medir la cantidad de codigo cubierto por las pruebas.
- < 60% -> No es suficiente
- 60% - 80% -> se puede mejorar
-
= 80% -> Es suficiente y una buena medida
Para ejecutar coverage, demos configurar nuestro package.json, colocar esto en nuestros scripts
"test:coverage": "npm run pretest && jest --detectOpenHandles --coverage"Para simular errores en nuestro código podemos utilizar mock, le pasamos como parametro la ruta de nuestra variable, en este caso db. Posterior a ello con spyOn() en su parametro le pasamos nuestra variable y el metetodo que quemaros observar su comportamiento, por ejemplo authenticate() en formato string
jest.mock('../config/db')
describe('connect DB', () => {
it('should hanlde databe connection error', async () => {
jest.spyOn(db, 'authenticate').mockRejectedValueOnce(new Error('Error al conectar a la BD'))
const consoleSpy = jest.spyOn(console, 'log')
await connectDB()
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Error al conectar a la BD'))
})
})instalar dependencias
npm i swagger-jsdoc swagger-ui-expressnpm i -D @types/swagger-jsdoc @types/swagger-ui-expressnpm i morgan