2013-04-30 81 views
0

我正在學習節點和摩卡,並在下面進行了測試(生產代碼增加了數據庫中的字段)。使用摩卡和嵌套回調測試節點服務器

要查看它是否正常工作,請在調用/ events之前和之後輸出此字段的值(請參閱兩個console.log語句)。

目前,兩種情況下的輸出值均爲1。在測試之外,代碼工作正常,字段遞增。

我懷疑它與我的測試代碼中的回調有關(因爲我仍然在學習如何正確編寫和測試節點代碼,這幾乎肯定是這種情況)。

希望有人能夠發現問題。這個測試的生產代碼是here(gist)。

it('"processed" event increases processed count', function(done) { 
    Edm.find({campaignguid: '1234'}).success(function(edm) { 
    edmProcessedCount = edm.processed; 
    console.log("pre: " + edmProcessedCount); // result is 1 

    request.post('http://localhost:3001/events?campaignguid=1234&event=processed', function(err, res, body) { 
     Edm.find({campaignguid: '1234'}).success(function(edmm) { 
     console.log("post : " + edmm.processed); // result is 1 (should be 2) 
     done(); 
     }); 
    }) 

    }); 
}); 
+0

你交看起來不錯,除了不檢查代碼'err',看看'請求期間發生的錯誤.POST()'。它可能與你的'/ events'處理程序的實現有關,所以也可以發佈它。 – robertklep 2013-04-30 10:42:36

+0

我認爲你必須顯示Edm.find的代碼,因爲edm和edmm參數只是2個獨立的變量。目前代碼中沒有任何內容暗示它們是相同的,並且是一個計數器。 – AndyD 2013-04-30 10:43:01

+0

@AndyD'Edm.find'是一個Sequelize構造('Edm'是模型,'find'是查詢數據庫的方法)。 – robertklep 2013-04-30 10:45:47

回答

1

你在摩卡測試用例查詢缺少一個where條款:

Edm.find({ where : { campaignguid: '1234' }}) 
      ^^^^^