【发布时间】:2011-03-11 02:44:23
【问题描述】:
是否可以从不提供无参数构造函数并且不将任何参数传递给构造函数的类创建模拟?也许动态创建 IL?
背景是我不想只为测试定义接口。解决方法是为测试提供无参数构造函数。
【问题讨论】:
-
另外,从创建 Mocks 的 Moq 用法来看,您需要将方法设为虚拟。似乎在那种情况下,界面通常会更好。不确定其他 Mocking 框架。
-
理想情况下,应该在整个代码中使用接口;与具体实现相比,因此“仅为测试创建接口”的评论成为一个有争议的观点。
-
我认为只有一个实现的接口是毫无价值的人工制品。
-
你会发现在c#中测试的时候必须要创建一个接口。作为替代方案,您可以为方法/属性提供 virtual 关键字,但您会发现接口可以更好地表达您的设计,并允许将具体实例与消费者更好地解耦。
标签: c# .net reflection constructor mocking