2012-07-26 56 views
0

我在寫一個數據庫測試(由摩卡拼命地跑),調用findOne保存文檔後,發現一個奇怪的現象:貓鼬查詢/插入無序錯誤?

僞這裏: ...

test1 
A.save(check('A',done)); 

test2 
B.save(check('B',done)); 

test3 
C.save(check('C',done)); 
... 

check = function(name, done) { 
    theModel.findOne({name:name}, function(err,result) { 
     assert.notEqual(result,null); 
     result.remove(done); 
    }); 
} 

然後,測試通過但B測試不合格。我檢查日誌,我發現一個奇怪的事情: 首先它執行插入,後查詢,刪除後(第一次測試,確定這是預期的行爲)。 第一次測試後,我看到查詢在插入之前執行(所以測試失敗,沒有任何東西被刪除),我感到震驚。 第三等表現一樣!查詢在插入之前執行:(

因此,唯一通過的測試是第一個測試(如果我用B更改A,然後B通過,A不是)如果我查看mongodb集合,我可以看到另一個在查詢後執行的插入(並且因爲斷言失敗,它們被刪除)

我正在使用貓鼬2.7.2,(但是我使用的是之前的版本,只是更新以查看它是否是一個已解決的錯誤) 。說明:(

回答

0

我錯了......

沒有注意到我調用save之前實際調用檢查(因爲我打電話的功能側保存方法...即時通訊如此愚蠢,新的JavaScript)。

好了,所以我應該在其他的方式進行檢查:

A.save(function(err, result) { check('A', done);}) 

我道歉!