Javascript Mockgoose不拦截数据库调用
我使用mockgoose在一些控制器单元测试中模拟db。在运行我的测试套件之后,我可以在我的测试套件和数据库中找到一个具有凭据的用户。我觉得这与我在app.js中连接有关,但我迷路了 以下是相关代码: app.js:Javascript Mockgoose不拦截数据库调用,javascript,node.js,unit-testing,mongoose,mocha.js,Javascript,Node.js,Unit Testing,Mongoose,Mocha.js,我使用mockgoose在一些控制器单元测试中模拟db。在运行我的测试套件之后,我可以在我的测试套件和数据库中找到一个具有凭据的用户。我觉得这与我在app.js中连接有关,但我迷路了 以下是相关代码: app.js: var express = require('express'); var path = require('path'); var logger = require('morgan'); var cookieParser = requi
var express = require('express');
var path = require('path');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var app = express();
var mongoose = require('mongoose');
var db;
mongoose.connect('mongodb://****:****@ds053438.mlab.com:53438/express-crud');
db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error: '));
require('./router')(app);
路由器/控制器:
var User = require('../../models/user');
var routes = function(app) {
var baseUrl = app.get('baseUrl') + '/users';
/* POST new user */
app.post(baseUrl + '/', function (req, res, next) {
var user = new User();
// FOR THE LOVE OF GOD HASH PASSWORD IDIOT
user.password = req.body.password;
user.username = req.body.username;
user.admin = false;
User.create(user, function (err, createdUser) {
if (err) {
return next(err);
}
res.status(200).send({
message: 'success',
username: createdUser.username,
success: true
});
});
});
}
module.exports = routes;
型号:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
username: {
type: String,
required: true,
minlength: 4,
trim: true
},
// hash it nerd.
password: {
type: String,
required: true,
minlength: 12,
trim: true
},
admin: {
type: Boolean,
required: true
}
});
module.exports = mongoose.model('User', UserSchema);
测试:
var expect = require('chai').expect;
var request = require('supertest');
var mongoose = require('mongoose');
var mockgoose = require('mockgoose');
mockgoose(mongoose);
var app = require('../../app.js');
var baseUrl = app.get('baseUrl');
describe('CONTROLLERS', function() {
describe('/users/', function () {
describe('POST', function () {
it('responds with 200 for valid payload', function (done) {
request(app)
.post(baseUrl + '/users')
.set('Accept', 'application/json')
.send({
'username': 'testUserWithMockgoose',
'password': 'testPasswordThatsLongEnough'
})
.expect(200)
.end(function (err, res) {
if (err) {
return done(err);
}
done();
})
})
});
});
});
这不是我的完整代码,但我试图在不丢失任何相关信息的情况下对其进行精简。谢谢 我也有同样的问题
mockgoose(mongoose)
app初始化后模拟mongoose并连接mongoose。所以它无法用你的mongodb来嘲笑mongodb和凝乳。你的解决方案是什么?我在想是否有可能将猫鼬分离。在其他地方连接,这样它就会在mockgoose(猫鼬)之后调用。然后()