# Test
# Jest

Jest es un marco de prueba de JavaScript encantador con un enfoque en la simplicidad.
Funciona con proyectos usando: Babel, TypeScript, Node, React, Angular, Vue y más.
# Instalación
sudo npm i jest -D
# Configuración
Para el uso de jest en nuestro proyecto es necesario indicarle el ambiente en el que se ejecutará. Por lo que es necesario crear un archivo de configuracion jest.config.js
module.exports = {
testEnvironment: 'node'
}
# Uso
/*eslint-env jest */
const expect = require('expect')
const server = require('../index')
beforeAll((done) => {
server.events.on('start', () => {
done()
})
})
afterAll((done) => {
server.events.on('stop', () => {
done()
})
server.stop()
})
const header = {
url: '/v1/login',
method: 'POST'
}
const correctPayload = {
name: 'admin',
password: 'admin'
}
const incorrectPayload = {
name: 'sfvwerv',
password: 'screv'
}
test('Regresa un mensaje de autentificacion correcta', async function(done){
expect.assertions(2)
const req = Object.assign({}, header, { payload: correctPayload})
const res = await server.inject(req)
expect(res.statusCode).toBe(200)
expect(res.result).toHaveProperty('token')
done()
})
test('Regresa un error por mandar credenciales incorrectas', async function (done) {
expect.assertions(1)
const req = Object.assign({}, header, { payload: incorrectPayload })
const res = await server.inject(req)
expect(res.statusCode).toBe(401)
done()
})
Nota
Los archivos de test usan la nomenclatura: identificador.test.js para que jest los identifique sin necesidad de especificarlo como argumento en el comando
Ejemplo: login.test.js
# Ejecucion del test
jest --verbose --detectOpenHandles
Nota
--detectOpenHandles
Para intentar recoger e imprimir las manijas abiertas evitando que Jest salga limpiamente. Use esto en los casos en que necesite usar --forceExit para que Jest salga y pueda rastrear la razón. Implementado usando async_hooks, por lo que solo funciona en el Nodo 8 y posteriores.
--verbose
Muestra los resultados de la prueba individual con la jerarquía de la suite de prueba.