这是交易,我在 /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 仍然是错误的。
让我头疼的是,我在其他地方也有这条路线
app.get('/bar/:id', function(req, res){
Foo.isBar(req.params.id, function(err) {
if(err) // handle it
else res.redirect('back');
});
});
...它很好地将 Bar 设置为 true。
我不明白出了什么问题。是我的测试吗?我的模型?