L'utilisation de mockgoose dans un test unitaire simple est assez simple. Cependant, je suis un peu flou quant à la façon d'utiliser mockgoose ou d'autres solutions moqueuses dans un test d'acceptation ou d'intégration.Comment utiliser mockgoose (ou tout autre moqueur) dans le test d'intégration d'application express
Compte tenu d'un simple express/app MongoDB comme ce qui suit:
/*app.js*/
const express = require('express')
const app = express()
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var greetingSchema = mongoose.Schema({
greeting: String
});
var Greeting = mongoose.model('Greeting', greetingSchema);
app.get('/', function (req, res) {
Greeting.find({greeting: 'Hello World!'}, function (err, greeting){
res.send(greeting);
});
});
app.listen(3000, function() {
console.log('Example app listening on port 3000!')
})
et un simple test d'intégration comme ceci:
/*test.js*/
const app = require('app.js');
const request = require('supertest');
it('sends "Hello World!" on the response body', (done) => {
request(app)
.get('/')
.expect(200, 'Hello World!', done);
});
});
En utilisant l'application réelle de la demande, nous connectons à la base de données de l'application ('mongodb: // localhost/test'). Comment peut-on alors utiliser mockgoose, ou toute autre solution, pour se moquer de la base de données MongoDB et lancer un test d'intégration comme celui présenté ci-dessus?
Génial. Je me demandais juste, vous ne semblez pas avoir une connexion de base de données dans votre fichier app.js. Ne devriez-vous pas appeler db.open() depuis le fichier app.js? – neoflash
@neoflash J'ai un index.js avec 'conn.Open()' et 'app.listen' après la connexion db est ok;) – lmfresneda
@Imfresneda voulez-vous bien ajouter vos index.js à votre réponse? – neoflash