tests de plaisanterie sont en cours avantAll

Scénario [MIS À JOUR]

J’essaie de me connecter à mongodb avant d’exécuter des scénarios de test. Si je ne me trompe pas, je peux utiliser beforeAll, qui est inclus dans Jest où je peux me connecter à ma firebase database avant d’exécuter des scénarios de test.

Tester

const request = require ('supertest'); const app = require ('../../app'); const db = require ('../../db.js'); const url = 'mongodb://localhost:27017'; //UPDATED beforeALL (thanks to @andreas-köberle) beforeAll ((done) => { db.connect (url, (err) => { if (err) { console.log ('Unable to connect',err) process.exit(1) } else { console.log('success') } }); }); test('should response the GET method', async () => { console.log('DADAD'); const res = await request (app).get ('/expense'); // I've set /expense in app (app.use('/expense,'expenseRoute) return expect(res.statusCode).toBe (200); }); afterAll ( () => { db.close (); }); 

DB

 const MongoClient = require ('mongodb').MongoClient; const dbName = 'expenseTest'; let state = { db: null, }; exports.connect = (url, done) => { if (state.db) return done (); MongoClient.connect (url, (err, client) => { const db = client.db(dbName); state.db = db; done (); }); }; exports.get = () => { return state.db; }; exports.close = done => { if (state.db) { state.db.close ((err, res) => { state.db = null; done (err); }); } }; 

ROUTE

 const express = require ('express') const router = express.Router () const MongoClient = require ('mongodb').MongoClient const assert = require ('assert') let db = require ('../db') /** * Returns the expense */ router.get ('/', (req, res) => { console.log(db.get()); let expenseCollection = db.get ().collection ('expenseTrack') expenseCollection.find({}).toArray((err, docs) => { res.status(200).send(docs) }) //res.status(200).send('hello') }) /** * Stores the expense in db */ router.post ('/', (req, res) => { let expenseCollection = db.get ().collection ('expenseTrack') expenseCollection.insert (req.body, (err, result) => { if (err) console.log (err) else res.status (200).send (result.ops) }) }) module.exports = router 

J’ai des journaux de console dans Test, dans ma route GET et dans beforeAll, voici la sortie de npm run test

 ● Console console.log test/express/startupTest.test.js:18 DADAD console.log routes/Expense.js:13 null console.log test/express/startupTest.test.js:11 Succesfully 

Il est donc clair que cela arrive dans Test en premier. Si je modifie mon code de sharepoint terminaison pour que tous les scénarios de test fonctionnent correctement.

 /** * Returns the expense */ router.get ('/', (req, res) => { // console.log(db.get()); // let expenseCollection = db.get ().collection ('expenseTrack') // expenseCollection.find({}).toArray((err, docs) => { // res.status(200).send(docs) // }) res.status(200).send('hello') }) 

Après la mise à jour avantTout me donne maintenant une autre erreur / excpetion

  Timeout - Async callback was not invoked within timeout specified by jasminee.DEFAULT_TIMEOUT_INTERVAL.