2015-09-15 102 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