[英]Moq a void method
我試圖弄清楚這個Mock(使用Moq框架)的東西是如何起作用的,但是我對返回void的方法感到有些困惑。
原始對象具有以下方法/屬性:
void Add(Person entity);
void Save();
IQueryable<Person> Persons;
Add方法調用InsertOnSubmit
(它的Linq為sql),Save方法調用Context.SubmitChanges()
。 Person的屬性返回Table<News>
對象。
我不知道如何模仿這些方法,因為我顯然不能使用Returns()
。
或者我的設計是否意味着我實際上無法正確地模擬對象?
這取決於你打算測試什么。
當您想要測試被測試的類與其他類之間的交互時,Moq可以幫助您。
在您描述的情況下,您可能正在測試使用具有上述方法和屬性的類的類。 要驗證要檢查是否使用預期參數調用Add
方法的交互,請調用Save
方法並引用Persons
屬性以讀取結果。 這可以通過以下方式實現:
var mockedClass = new Mock<IDaoClass>();
var classUnderTest = ...
mockedClass.SetupGet(m => m.Persons).Returns(new List<Person>().AsQueryable());
classUnderTest.DoSomething();
mockedClass.Verify( m => m.Add(It.IsAny<Person>()));
mockedClass.Verify( m => m.Save());
如果您想測試其他內容並提供這些方法的存根實現,那么您可能只想創建一個測試實現,或者考慮將Moq設置與表達為lambda而不是簡單設置的函數一起使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.