【发布时间】:2010-12-06 20:24:42
【问题描述】:
我很好奇人们喜欢用什么方法来模拟以及为什么。我知道的两种方法是使用硬编码的模拟对象和模拟框架。为了演示,我将概述一个使用 C# 的示例。
假设我们有一个带有 GetEmployeeById 方法的 IEmployeeRepository 接口。
public interface IEmployeeRepository
{
Employee GetEmployeeById(long id);
}
我们可以轻松地创建一个这样的模拟:
public class MockEmployeeRepository : IEmployeeRepository
{
public Employee GetEmployeeById(long id)
{
Employee employee = new Employee();
employee.FirstName = "First";
employee.LastName = "Last";
...
return employee;
}
}
然后,在我们的测试中,我们可以明确地告诉我们的服务使用 MockEmployeeRepository,无论是使用 setter 还是依赖注入。我是模拟框架的新手,所以我很好奇我们为什么要使用它们,如果我们可以做到以上几点?
【问题讨论】:
-
如果您没有使用框架的经验,硬编码会容易得多。框架更强大,特别是如果您想断言某个方法是完全调用还是经常调用。
标签: unit-testing testing mocking