Articles of mongoose sinon

如何存根Mongoose模型的构造函数

我正在尝试使用Sinon.js来存储我的Student Mongoose模型的模型构造函数。 var Student = require('../models/student'); var student = new Student({ name: 'test student' }); // I want to stub this constructor 看看Mongoose的源代码, Model从Documentinheritance它的原型,它调用了Document函数,所以这就是我为了存根构造函数而尝试的。 然而,我的存根永远不会被调用。 sinon.stub(Student.prototype__proto__, 'constructor', () => { console.log('This does not work!'); return { name: 'test student' }; }); createStudent(); // Doesn't print anything 感谢您的任何见解。 编辑:我不能直接设置Student()作为存根,因为我也stub Student.find()在另一个testing。 所以我的问题基本上是“我如何同时存根Student()和Student.find() ?”

保存模式时检查模型的值

我试图testing一些callback内部没有连接到数据库。 要做到这一点,我需要存根模型的保存方法。 但是,我仍然需要检查作为逻辑的一部分而改变的模型值。 逻辑: // check if user exists with facebook or google account User.findOne({ $or: [{'facebook.email': email}, {'google.email': email}] }, function(err, user) { if (err) return cb(err); else { // create new user if (!user) { user = new User(); } // add the local account user.local.email = email; // <– user.local.password = User.generateHash(password); […]

unit testingNodejs Express应用程序

我正在为一个控制器编写一个unit testing,它使用mongoose从MongoDB获取用户列表。 已经写成testing成功和错误的条件。 这是正确和充足的? 或者我需要使用supertest或superagent来使用它的路线来testing这个控制器。 但是这更多的是整合testing,对。 在这里,我也运行我所有的中间件。 // /controllers/users.js exports.list = function (req, res) { User.find({}, function(err, users) { if(err) return applib.handleError(res, err); res.json(users); }); }; // test/users.js var chai = require('chai'); var expect = chai.expect; var sinon = require('sinon'); var users = require('../controllers/users'); var mongoose = require('mongoose'); var User = mongoose.model('User'); var applib = […]

对Mongoose模型的虚拟属性进行挖掘

有没有一种方法来存储一个Mongoose模型的虚拟属性? 假设Problem是一个模型类, difficulty是一个虚拟属性。 delete Problem.prototype.difficulty返回false,并且该属性仍然存在,所以我不能用我想要的任何值replace它。 我也试过了 var p = new Problem(); delete p.difficulty; p.difficulty = Problem.INT_EASY; 它没有工作。 将undefined分配给Problem.prototype.difficulty或者使用sinon.stub(Problem.prototype, 'difficulty').returns(Problem.INT_EASY); 会抛出一个exception“TypeError:无法读取未定义的属性'范围',而做 var p = new Problem(); sinon.stub(p, 'difficulty').returns(Problem.INT_EASY); 会抛出一个错误“TypeError:试图包装string属性困难作为function”。 我正在用尽想法。 帮帮我! 谢谢!

使用Sinon扼杀一个mongoose模型

我试图存根用于此对象的mongoose依赖项: var Page = function(db) { var mongoose = db || require('mongoose'); if(!this instanceof Page) { return new Page(db); } function save(params) { var PageSchema = mongoose.model('Page'); var pageModel = new PageSchema({ … }); pageModel.save(); } Page.prototype.save = save; } module.exports = Page; 使用这个问题的答案,我试过这样做: mongoose = require 'mongoose' sinon.stub mongoose.Model, 'save' 但是我得到了错误: TypeError:尝试将未定义的属性保存为函数 我也试过这个: sinon.stub […]

使用Sinon存根链接mongoose电话

我得到如何将Mongoose模型存储(感谢用Sinon存储Mongoose模型 ),但是我不太明白如何存储调用,如: myModel.findOne({"id": someId}) .where("someBooleanProperty").equals(true) … .exec(someCallback); 我尝试了以下内容: var findOneStub = sinon.stub(mongoose.Model, "findOne"); sinon.stub(findOneStub, "exec").yields(someFakeParameter); 无济于事,有什么build议?

用Sinon扼杀一个mongoose模型

我想在特定的模型中为Mongoose保存方法创build一个存根,所以我创build的模型的任何实例都将调用存根,而不是正常的Mongoose保存方法。 我的理解是要做到这一点的唯一方法就是像这样对整个模型进行存根: var stub = sinon.stub(myModel.prototype); 不幸的是,这行代码会抛出以下错误: TypeError: Cannot read property 'states' of undefined 有没有人知道这里出了什么问题?