模拟具体类与接口有什么好处吗?
样品:
在我的CustomerService
课程中,我将CustomerDataProvider
称为
customerDataProvider.GetCustomers();
customerDataProvider
也可以是ICustomerDataProvider
类型。当我想在不进入数据库的情况下测试CustomerService
内的逻辑时,我必须模拟customerDataProvider
或ICustomerDataProvider
类型的CustomerDataProvider
对象。
模仿一种类型优于另一种类型的优势在哪里?
答案 0 :(得分:0)
模拟接口而不是类的主要好处是它更简单 - 接口不能被密封/最终,它们不能拥有你无法覆盖的方法,并且它们不能具有不寻常的构造语义。模拟库可以消除模拟类的许多麻烦,但它们无法弥补不可测试的设计。
模拟类而不是接口的主要原因是:有时你只有一个类。如果您正在进行自己的设计和实施,那么您可以选择构建一个或另一个。如果你正在消费别人的图书馆,你必须处理它提供的内容。