5

我正在尝试让 mocha 的--watch选项起作用。它工作正常,直到我不得不对猫鼬模型做任何事情。据我了解,显然 Mongoose 保留了某种缓存,并且我得到的错误已被跟踪和关闭。问题是,我对这整个事情有点陌生,需要一些指导,如何以及在哪里放置我需要的东西才能让它工作。所以,我尝试过的:

  • mongoose.model. 有效,但显然违背了--watch.
  • 在我的 Mongoose 套件的“之后”块中与 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');
    });
});
4

2 回答 2

11

我在 afterEach() 块中运行它取得了一些成功:

delete mongoose.models.YourModel;
delete mongoose.modelSchemas.YourModel;
于 2013-08-19T07:32:03.407 回答
0

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

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)
  })
  ...
})
于 2016-06-03T12:15:11.843 回答