/models/foo.js にこの Foo モデルがあります。
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var Foo = new Schema({
Bar : {type: Boolean, default: false},
Baz : String
});
Foo.statics.isBar = function(id, callback) {
return this.update({'_id': id}, {$set: {Bar: true}}, callback);
};
module.exports = mongoose.model('Foo', Foo);
/test/modelFoo.js に mocha (chai expect ライブラリを使用) を使用してテストを作成しようとしています。
var chai = require('chai'),
expect = chai.expect,
mongoose = require('mongoose'),
Foo = require('../models/foo');
// ...connecting to the db and creating a test Foo...
describe('Foo Bar', function(){
it('should set Bar to true', function(done){
Foo.findOne({}, function(err, foo) {
Foo.isBar(foo._id, function() {
expect(foo.Bar).to.be.true;
done();
});
});
});
});
アサーションは失敗します。mongo を見ると、Bar はまだ false です。
頭を悩ませているのは、他の場所にこのルートがあることです
app.get('/bar/:id', function(req, res){
Foo.isBar(req.params.id, function(err) {
if(err) // handle it
else res.redirect('back');
});
});
...そして、バーを適切にtrueに設定します。
何が悪いのかわかりません。それは私のテストですか?私のモデル?