2015-09-15 101 views
1

我试图存根一个猫鼬模型返回一个JSON值使用兴农存根猫鼬模型

是我的代码是

var valueToReturn = { 
         name:'xxxxx' 
        }; 

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

stub.returns(valueToReturn); 

我得到这个错误:类型错误:试图包裹未定义的财产findOne作为功能

+0

看看[这里](http://stackoverflow.com/a/28885743/1521933) –

+0

在这里,他们使用mongoose.Model的findOne方法。我正在尝试使用MyModel.findOne,因为我的导出方法已将findOne用于2种不同的模型。所以我想尝试和存根2个不同的模型 –

回答

3

看看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); 

你可以找到关于回购工作的例子。

另外,推荐:使用mock方法而不是stub,这将检查方法确实存在于原始对象上。

+0

你是否是sinon-mongoose的创造者?你可以在7-8个不同的线程中插入猫鼬测试。 – VtoCorleone

+1

@VtoCorleone是的,我分享它,因为我认为它可能对其他面临同样的问题时,我有嘲笑猫鼬模型:) – Gon