Una simplificación muy del código donde el servidor se inicia de forma asíncrona
// server/app.js let appPromise = new Promise((resolve, reject) => { [..async stuff..] const app = express() const server = http.createServer(app) server.listen(config.port, config.ip, () => {...} }) export default appPromise;Desde donde empiezo las pruebas:
// test/index.js require('@babel/core').transform('code', {}); require('@babel/register'); let tests = require('./tests.js'); module.exports = {tests};El código donde se implementan las pruebas:
// test/test.js const app = require('../server/app') const chai = require('chai') const chaiHttp = require('chai-http') chai.use(chaiHttp); chai.should(); app.then(() => { describe(..tests...) })El error que obtengo:
.then() is not a function
¿Qué está yendo mal?
Creo que su problema es que está utilizando la exportación ES6, pero no está importando de la manera ES6.
Su importación de "aplicación" debe ser:
import appPromise from '../server/app';Además, su promesa en "app.js" no parece resolver nada, si eso no es una omisión, debe resolver algo en su promesa para que .then() funcione. Aquí hay un ejemplo de trabajo:
const appPromise = new Promise((resolve, reject) => { resolve('appPromise resolved'); });