重置猫鼬模型缓存



我正试图让摩卡的--watch选项工作。它工作得很好,直到我不得不用猫鼬模型做任何事情。显然猫鼬保持某种缓存,从我的理解,我得到的错误已经被跟踪和关闭。问题是,我对这整件事有点陌生,需要一些指导,如何以及在哪里放置我需要的东西来让它工作。所以,我所尝试的:

  • mongoose.model周围创建包装器。工作,但显然违背--watch的目的。
  • 在我的Mongoose套件的"after"块中断开Mongo(使用mongoose.disconnect)。
  • 放弃--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);

测试/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');
    });
});

我在我的afterEach()块中运行了一些成功:

delete mongoose.models.YourModel;
delete mongoose.modelSchemas.YourModel;

为了补充boneskull,以下是我使用的ES6代码,包括连接打开/关闭以测试User mangoose模型:

import mongoose from 'mongoose'
import User from '/models/user'
describe('User model', () => {
  beforeEach((done) => {
    mongoose.connect('mongodb://localhost/somedatabase-test', done)
  })
  afterEach((done) => {
    delete mongoose.models.User
    delete mongoose.modelSchemas.User
    mongoose.connection.close(done)
  })
  ...
})