我很好奇人们喜欢使用哪种模拟方法以及为什么。我知道的两种方法是使用硬编码的模拟对象和一个模拟框架。为了说明这一点,我将用C#举一个例子。
假设我们有一个IEmployeeRepository接口,其中有一个名为GetEmployeeById的方法。
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或依赖注入。我对模拟框架很陌生,所以我很好奇为什么我们要使用它们,如果我们可以做以上操作的话?