0
単純な単体テストでのmockgooseの使用はかなり簡単です。しかし、合格テストやインテグレーションテストでは、モックゴースや他のモッキングソリューションをどのように使用するのか、少しばかげています。エクスプレスアプリ統合テストでのmockgoose(または他のdb mocking)の使用方法
を考えると、次のようなシンプルな特急/ MongoDBのアプリ:
/*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!')
})
と、このような単純な統合テスト:要求で実際のアプリを使用することにより
/*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);
});
});
を、我々はに接続していますアプリケーションのデータベース( 'mongodb:// localhost/test')。 MongoDBデータベースを模擬して、上に示したような統合テストを実行するには、mockgooseやその他のソリューションをどのように使用できますか?
驚くばかりです。あなたがapp.jsファイルにデータベース接続を持っているようには思えません。 app.jsファイル内からdb.open()を呼び出すべきではありませんか? – neoflash
@neoflash DB接続後に 'conn.open()'と 'app.listen'を持つindex.jsを持っています; – lmfresneda
@Imfresnedaあなたの答えにindex.jsを追加してもよろしいですか? – neoflash