我對單元測試很熟悉,但我仍然在學習模擬和嘲笑框架。我得到的想法(我認爲),但語法仍然有點外國。我正在考慮創建一些自動生成接口和類的模擬實現的T4模板。使用泛型和擴展方法的組合,這將讓我做這樣的事情:使用T4爲接口的代碼生成模擬對象是一個好主意嗎?
var service = new MockCustomerService(); //code-generated and implements ICustomerService, has a method named 'Insert'
var target = new CustomerController(service);
var item = new Customer();
target.Insert(item);
service.InsertMethod.Assert.WasLastCalledWith(item);
或:
var service = new MockCustomerService(); //code-generated and implements ICustomerService, has a method named 'GetById'
var target = new CustomerController(service);
var item = new Customer();
target.GetByIdMethod.ShouldReturn(item);
var actual = target.Edit(1);
service.GetByIdMethod.Assert.WasLastCalledWith(1);
Assert.AreEqual(actual.ViewData.Model, item);
首先,這是甚至真的「嘲笑」,還是我失去了一些基本的東西。其次,這看起來似乎是一種合理的方法,或者是否有理由使用框架而無需手動創建類似的類?第三,那裏有沒有其他類似的東西?我環顧四周,並沒有發現太多...
感謝您的回答。清楚的是,我正在談論代碼生成實際的具體模擬對象,而不是生成單元測試。換句話說,我認爲T4生成MockCustomerService可能比使用RhinoMocks,Moq等在運行時生成它更好。 – Daniel