如何来自mongoose的sinon stub错误

时间:2016-12-17 16:21:47

标签: node.js mongodb mongoose sinon

我有这样的事情(取自http://thecodebarbarian.com/mongoose-error-handling.html):

var schema = new Schema({
  name: {
    type: String,
    unique: true
  }
});

schema.post('save', function(error, doc, next) {
  if (error.name === 'MongoError' && error.code === 11000) {
    next(new Error('There was a duplicate key error'));
  } else {
    next(error);
  }
});

var Person = mongoose.model('Person', schema);

现在我想在使用过程中使用sinon stub进行模拟:

const person = new Person({ name: 'Val' }); 
person.save(); // <--- i want a mocked error to be passed to the schema.post middleware

我该怎么做?

一般资料: 我得到了一些课程,MyDao,他有一个“拯救”的课程。方法,返回person.save();

所以我试过了:

sinon.stub(MyDao.prototype, 'save', () => {
        throw new Error({name: 'MongoError', code: 11000}))};

但它不起作用......

1 个答案:

答案 0 :(得分:0)

你需要存根对象的实例而不是类。

const person = new Person({ name: 'Val' }); 
sinon.stub(person, 'save').throws({name: 'MongoError', code: 11000});
person.save();