Open milosoria opened 3 years ago
Probamos eliminando las líneas de supertest y aún así, el problema persiste. Parece ser el require de la app...
¿Qué te aparece al hacer console.log
antes del describe.skip
y correr los tests?
const app = require('../../app');
const request = supertest(app.callback());
console.log(app);
console.log(request);
En una ejecución exitosa debieses ver algo como lo siguiente:
yarn test
yarn run v1.22.4
$ jest --runInBand --verbose
Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db
console.log
{ subdomainOffset: 2, proxy: false, env: 'test' }
at Object.<anonymous> (src/routes/api/authors.test.js:7:9)
console.log
{
acl: [Function],
bind: [Function],
checkout: [Function],
connect: [Function],
copy: [Function],
delete: [Function],
get: [Function],
head: [Function],
link: [Function],
lock: [Function],
'm-search': [Function],
merge: [Function],
mkactivity: [Function],
mkcalendar: [Function],
mkcol: [Function],
move: [Function],
notify: [Function],
options: [Function],
patch: [Function],
post: [Function],
propfind: [Function],
proppatch: [Function],
purge: [Function],
put: [Function],
rebind: [Function],
report: [Function],
search: [Function],
source: [Function],
subscribe: [Function],
trace: [Function],
unbind: [Function],
unlink: [Function],
unlock: [Function],
unsubscribe: [Function],
del: [Function]
}
at Object.<anonymous> (src/routes/api/authors.test.js:8:9)
Hola! Al correr el test, falla antes de poder hacer console.log, por lo que no imprime nada. Descubrimos que comentando el middleware de swagger en app.js, el test corre con normalidad y en este caso, los console.log retornan el mismo resultado que el de arriba!
Ah, interesante! ¿Es un package que están usando para el middleware de Swagger, o lo construyeron ustedes? Si es el primer caso, ¿qué package es?
Lo pregunto porque, si es un package, puede que tenga alguna configuración que les permita ejecutar los tests sin problemas. Ahora se agregará un check en la Github Action para los tests, por lo que si el código no está preparado para correr los tests de forma automática (sin tener que comentar la línea antes), les va a fallar y no podrán hacer merge de sus PRs.
El package es koa2-swagger-ui y en app.js tenemos lo siguiente
const spec = yamljs.load('src/swagger/swagger.yaml');
app.use(
koaSwagger({
routePrefix: '/swagger', // host at /swagger instead of default /docs
swaggerOptions: {
spec,
},
}),
);
No encontré ninguna opción de configuración para evitar conflictos con jest 😞
No existe alguna forma de que nos revisen la documentación de forma aislada? Porque nos tomó mucho tiempo hacerla y significaría un retraso en el trabajo 😢
No te preocupes, entiendo perfecto el tiempo que debe haberles tomado crear el archivo YAML para Swagger.
En una de las primeras líneas después de los requires, dentro de src/app.js
se encuentra esto:
const testMode = app.env === 'test';
Esa variable testMode
podrían utilizarla para evitar agregar el middleware al correr los tests de la siguiente forma:
if (!testMode) {
const spec = yamljs.load('src/swagger/swagger.yaml');
app.use(koaSwagger({ /* ... */ }));
}
Hagan la prueba de forma local y, por supuesto, también en Heroku para ver si se ve la documentación sin problemas.
Súper, no se me había ocurrido, gracias por la ayuda!!!
Hola! Estamos teniendo problemas con el testing de endpoints.
El único test que tenemos, a pesar de ser saltado (skip), genera problemas, así que suponemos que es debido a supertest. El error es el siguiente:
A diferencia de la issue relacionada al problema #97, todas las rutas están en el formato correcto y el servicio de psql está corriendo, además creamos la bdd de testing requerida.
Cualquier ayuda, se agradece!