首先,我不得不說,我是新來的嘲弄。所以也許我錯過了一個觀點。TDD和嘲諷
我也剛開始習慣TDD方法。
因此,在我的實際項目中,我正在業務層的一個類中工作,而數據層尚未部署。我想,這將是開始嘲笑的好時機。我正在使用Rhino Mocks,但在寫類之前,我需要了解一個類的實現細節。
Rhino Mocks會檢查是否實際調用預期調用的方法。所以我經常需要知道被測方法首先調用哪個模擬方法,即使它們可以以任何順序調用。正因爲如此,我在測試它們之前經常編寫複雜的方法,因爲那樣我就知道調用方法的順序。
簡單的例子:
public void CreateAandB(bool arg1, bool arg2) {
if(arg1)
daoA.Create();
else throw new exception;
if(arg2)
daoB.Create();
else throw new exception;
}
,如果我想測試這種方法的錯誤處理,我必須知道哪些方法被首先被調用。但我不想在第一次編寫測試時對實現細節感到迷惑。
我錯過了什麼嗎?
daoA和daoB正在注入,他們正在創造某事。在數據庫中。所以如果我想測試上面的例子,那麼測試異常處理纔有意義。但這個問題並沒有解決。我必須知道在arg2之前是否測試了arg1。 – myAces 2011-04-06 13:19:54
假設doa實現了一些接口,那麼您可以測試daoA是否調用了其'Create'方法,以及doaB。你可以通過設定對模擬的期望來做到這一點。我會在我的答案中添加一些細節。 – 2011-04-06 13:35:16
我想我已經開始明白了。我會通讀你的鏈接並嘗試你所提到的。感謝您的幫助 – myAces 2011-04-06 14:01:58