【发布时间】:2009-10-07 15:27:43
【问题描述】:
我熟悉单元测试,但仍在学习模拟和模拟框架。我明白了(我认为),但语法似乎仍然有点陌生。我正在考虑创建一些自动生成接口和类的模拟实现的 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);
首先,这真的是“嘲弄”吗,还是我错过了一些基本的东西。其次,这似乎是一种合理的方法,或者除了不必手动创建类似的类之外,还有其他理由使用框架吗?第三,还有其他类似的东西吗?我环顾四周,并没有找到太多...
【问题讨论】: