我正在學習測試驅動開發並嘗試使用Moq庫進行嘲諷。 Mock類的Setup方法的目的是什麼?模擬對象 - 設置方法 - 測試驅動開發
22
A
回答
7
安裝方法用於模擬對象 上設置的期望例如:
mock.Setup(foo => foo.DoSomething("ping")).Returns(true);
這裏要設置模擬對象的DoSomething
方法。你說當參數是「ping」時,該方法返回true。
現在,此對象可以進一步充當模擬或存根,取決於您的使用情況。如果你想在基於狀態的測試中使用它,它可以作爲一個存根。如果你想在基於行爲的測試中使用它,它可以作爲一個模擬。在行爲測試中,您將調用模擬對象的驗證方法斷言,該方法被稱爲與「平」參數
進一步參考以下鏈接:
32
的Moq Mock
對象的默認行爲是對所有方法和屬性進行存根。這意味着使用任何參數調用該方法/屬性不會失敗,並將返回特定返回類型的默認值。
您撥打的任何或全部的原因如下Setup
方法:
- 你想輸入值限制的方法。
public interface ICalculator {
int Sum(int val1, val2);
}
var mock = new Mock<ICalculator>();
mock.Setup(m=>m.Sum(
It.IsAny<int>(), //Any value
3 //value of 3
));
上面的設置將匹配任何價值的方法Sum
呼籲val1
和3
- 要返回一個特定的值
val2
值。與ICalculator
繼續示例,以下設置將返回的值10,無論輸入參數:
var mock = new Mock<ICalculator>();
mock.Setup(m=>m.Sum(
It.IsAny<int>(), //Any value
It.IsAny<int>() //Any value
)).Returns(10);
- 你想用
Mock<T>.VerifyAll()
你設置後,確認所有先前的設置都被稱爲(一旦)。
var mock = new Mock<ICalculator>();
mock.Setup(m=>m.Sum(
7, //value of 7
3 //value of 3
));
mock.Setup(m=>m.Sum(
5, //value of 5
3 //value of 3
));
mock.VerifyAll();
上面的代碼驗證Sum
被調用兩次。一次使用(7,3)
,一次使用(5,3)
。
相關問題
- 1. 測試驅動開發 - 模擬對象
- 2. Android測試驅動開發
- 3. 測試驅動開發:無效方法
- 4. 測試驅動開發
- 5. 測試驅動開發 - WPF
- 6. 它是一種測試驅動開發方法嗎?
- 7. 測試驅動開發javascript
- 8. 測試驅動開發書
- 9. 是測試面向發展對測試驅動開發
- 10. REST API的測試驅動開發
- 11. 測試驅動開發/集成測試的RIA開發
- 12. Visual Studio 2010和測試驅動開發
- 13. 爲EF dbcontext設置模擬對象以測試存儲庫方法
- 14. 測試驅動的開發 - 單元測試(在CakePHP中)
- 15. Swift中的測試驅動開發
- 16. 使用PHPUnit模擬對象測試模板方法設計模式實現
- 17. 動態返回參數的模擬對象設置方法
- 18. MSBuild任務的測試驅動開發
- 19. Flash中的測試驅動開發
- 20. Ruby:模擬本地對象以測試模塊方法
- 21. PHPUnit模擬對象方法
- 22. 被測對象的模擬方法
- 23. 測試驅動的開發過程
- 24. Python測試驅動開發 - 第6章
- 25. 模擬測試方法
- 26. 測試驅動開發:asp.net mvc
- 27. 春季測試驅動開發嘲諷
- 28. 簡化設置模擬對象的Django測試
- 29. 模擬春季Junit測試中注入/設置對象
- 30. 自動開關的Xcode配置測試模擬器和設備
我沒有意識到可以簡單地調用Setup()多次設置多個不同的參數,這是我見過的唯一的地方。 – 2015-09-07 21:03:10