重置Mongoose模型缓存

Bri*_*cks 4 mocha.js mongoose node.js

我试图让摩卡的--watch选择工作.它工作正常,直到我必须用猫鼬模型做任何事情.显然,根据我的理解,Mongoose保留了某种缓存,并且我得到的错误已被跟踪和关闭.问题是,我对这整个事情有点新意,需要一些指导如何以及在哪里放置我需要的东西来实现这一点.所以,我尝试过:

  • 创建一个包装器mongoose.model.工作,但明显失败的目的--watch.
  • mongoose.disconnect在Mongoose套件的"after"区块中与Mongo(with )断开连接.
  • --watch每次放弃并运行测试.

在这三个中,很明显在第三个作品中,我真的想使用我的构建工具的所有功能.所以,这就是我所拥有的.我哪里错了?

车型/ user.js的

var mongoose = require('mongoose'),
    register = require('./_register');

var userSchema = mongoose.Schema({
    email: String,
    password: String
});

userSchema.methods.setPassword = function(password) {
    this.password = password;
};

module.exports = mongoose.model('User', userSchema);
Run Code Online (Sandbox Code Playgroud)

测试/ models.user.js

var User = require('../models/user');

describe('User', function() {

    describe('#setPassword()', function() {
        it('should set the password', function() {
            var user = new User();
            user.setPassword('test');
            user.password.should.not.equal('');
        });
        it('should not be in plaintext');
    });

    describe('#verifyPassword()', function() {
        it('should return true for a valid password');
        it('should return false for an invalid password');
    });
});
Run Code Online (Sandbox Code Playgroud)

bon*_*ull 11

我在afterEach()块中运行它有一些成功:

delete mongoose.models.YourModel;
delete mongoose.modelSchemas.YourModel;
Run Code Online (Sandbox Code Playgroud)