MongooseでDBのMockをする時のメモ
自分向けのメモ。
express + mongoose + mochaでWebアプリを作ることがよくあります。
テストを書くときは、できるだけModelを分けてDBにアクセスしないようにはしているのですが、 そうもいかないときもやっぱりあるわけで。。。
mongooseのMLを眺めてたら似たような投稿があったので試してみました。
https://groups.google.com/forum/?fromgroups=#!topic/mongoose-orm/SXLDA2uNAkw
Model
mongoose = require 'mongoose' Shema = new mongoose.Schema id: {type: String} exports.Shema = mongoose.model 'Shema', Schema
Router
Schema = require('./model').Schema exports.index = (req, res) -> Schema.findOne {}, (error, result) -> throw error if error if result.flg render 'index' else redirect '/fail'
Test
Schema = require('./model').Schema route = require('./route') chai = require 'chai' should = chai.should() descript 'index', -> req = params: '' body: '' res = render: (view, params) -> Schema.base.Model.findOne = (obj, callback) -> callback null, {flg: true} it 'should render index', (done) -> res = render: (view, params) -> view.should.equal 'index' done() route.index req, res
Mongooseのオブジェクトを拡張しちゃうわけですね。
ロジックが単純な場合はこれで十分かもしれません。