使用 Sinon 存根猫鼬模型

Using Sinon to stub a mongoose model

我正在尝试将猫鼬模型存根到 return json 值

我的密码是

var valueToReturn = {
                      name:'xxxxx'
                     };

var stub = sinon.stub(MyModel.prototype,'findOne');

stub.returns(valueToReturn);

我收到此错误:TypeError:Attempted 将未定义的 属性 findOne 包装为函数

看看sinon-mongoose。您只需几行就可以期待链式方法:

// If you are using callbacks, use yields so your callback will be called
sinon.mock(YourModel)
  .expects('findById').withArgs('abc123')
  .chain('exec')
  .yields(someError, someResult);

// If you are using Promises, use 'resolves' (using sinon-as-promised npm) 
sinon.mock(YourModel)
  .expects('findById').withArgs('abc123')
  .chain('exec')
  .resolves(someResult);

您可以在 repo 上找到工作示例。

此外,建议:使用 mock 方法而不是 stub,这将检查原始对象是否确实存在该方法。