相关疑难解决方法(0)

用Sinon对Mongoose模型进行挖掘

我想创建一个猫鼬存根save在特定模型的方法,让我创造我的模型的任何实例将调用存根而不是正常的猫鼬的save方法.我的理解是,这样做的唯一方法是将整个模型存根如下:

var stub = sinon.stub(myModel.prototype);
Run Code Online (Sandbox Code Playgroud)

不幸的是,这行代码导致我的测试抛出以下错误:

TypeError: Cannot read property 'states' of undefined
Run Code Online (Sandbox Code Playgroud)

有谁知道这里出了什么问题?

mongoose node.js sinon

20
推荐指数
3
解决办法
1万
查看次数

模拟/存根Mongoose模型保存方法

给出一个简单的Mongoose模型:

import mongoose, { Schema } from 'mongoose';

const PostSchema = Schema({
  title:    { type: String },
  postDate: { type: Date, default: Date.now }
}, { timestamps: true });

const Post = mongoose.model('Post', PostSchema);

export default Post;
Run Code Online (Sandbox Code Playgroud)

我希望测试这个模型,但我遇到了一些障碍.

我当前的规范看起来像这样(为简洁起见省略了一些东西):

import mongoose from 'mongoose';
import { expect } from 'chai';
import { Post } from '../../app/models';

describe('Post', () => {
  beforeEach((done) => {
    mongoose.connect('mongodb://localhost/node-test');
    done();
  });

  describe('Given a valid post', () => {
    it('should create the post', (done) => {
      const …
Run Code Online (Sandbox Code Playgroud)

unit-testing mongoose mongodb node.js sinon

15
推荐指数
2
解决办法
1万
查看次数

在模型上存储mongoose save方法

我想将saveMongoose模型可用的方法存根.这是一个示例模型:

/* model.js */
var mongoose = require('mongoose');
var userSchema = mongoose.Schema({
  username: {
    type: String,
    required: true
  }
});
var User = mongoose.model('User', userSchema);
module.exports = User;
Run Code Online (Sandbox Code Playgroud)

我有一些将调用该save方法的辅助函数.

/* utils.js */
var User = require('./model');
module.exports = function(req, res) {
  var username = req.body.username;
  var user = new User({ username: username });
  user.save(function(err) {
    if (err) return res.end();
    return res.sendStatus(201);
  });
};
Run Code Online (Sandbox Code Playgroud)

我想检查一下user.save使用单元测试在我的辅助函数中调用.

/* test.js */
var mongoose = require('mongoose');
var createUser = …
Run Code Online (Sandbox Code Playgroud)

unit-testing mocha.js mongoose

10
推荐指数
2
解决办法
3967
查看次数

使用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;
Run Code Online (Sandbox Code Playgroud)

使用这个问题的答案,我试过这样做:

mongoose = require 'mongoose'
sinon.stub mongoose.Model, 'save'
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误:

TypeError:尝试将undefined属性保存为函数

我也试过这个:

sinon.stub PageSchema.prototype, 'save'
Run Code Online (Sandbox Code Playgroud)

然后我得到了错误:

TypeError:应该包装对象的属性

有人能帮忙吗?我究竟做错了什么?

mongoose node.js sinon

6
推荐指数
2
解决办法
9743
查看次数

标签 统计

mongoose ×4

node.js ×3

sinon ×3

unit-testing ×2

mocha.js ×1

mongodb ×1