我有一種方法,它們有一些不同的結果(基於事件響應等)。但這是一個由其他應用程序使用的單個原子函數。用於複雜功能的TDD方法
我已經將構成此函數的功能的主要塊分解爲不同的函數,併成功地將測試驅動開發方法應用於這些元素中的每一個的功能。但這些元素不會暴露給其他應用程序使用。
所以我的問題是我該如何/應該如何輕鬆接近TDD風格的解決方案來驗證應該調用的單一方法在沒有大量測試重複或每次測試所需的大量設置的情況下都能正常運行?
我已經考慮過/考慮將功能塊移動到不同的類中,並使用Mocking來模擬所使用函數的響應,但它感覺不對,並且各個方法需要寫入主類中的變量(它真的感覺到希思羅賓遜)。代碼大致看起來像這樣(我已經刪除了很多參數以使事情更清晰,並附帶一些不相關的代碼)。
public void MethodToTest(string parameter)
{
IResponse x = null;
if (function1(parameter))
{
if (!function2(parameter,out x))
{
function3(parameter, out x);
}
}
// ...
// more bits of code here
// ...
if (x != null)
{
x.Success();
}
}
有人可能會說,如果一個方法影響應用程序中的某個部分而不提供任何類型的return/respons(如果它失敗或失敗),那麼設計會出現問題。 我會重構該方法,首先創建一個測試方法! (你可以在這裏閱讀有關它的信息:http://blog.smartit.se/2010/04/23/use-test-driven-development-to-verify-that-the-code-will-always-work/) 。如果方法返回void並且不拋出任何異常,那麼它可能工作正確?也許是Fauly的設計。但這只是一個指針而不是回答:) – 2010-05-05 18:21:27