相关疑难解决方法(0)

为什么要创建模拟对象?

在最近的一次采访中,有人问我为什么要创建模拟对象.我的回答是这样的:"拿一个数据库 - 如果你正在编写测试代码,你可能不希望那个测试实时连接到将要执行实际操作的生产数据库."

从回答来看,我的回答显然不是面试官所寻求的.什么是更好的答案?

testing unit-testing mocking

25
推荐指数
3
解决办法
5162
查看次数

硬编码模拟对象与模拟框架

我很好奇人们喜欢用什么方法来嘲笑和为什么.我所知道的两种方法是使用硬编码模拟对象和模拟框架.为了演示,我将概述一个使用C#的示例.

假设我们有一个名为GetEmployeeById的方法的IEmployeeRepository接口.

public interface IEmployeeRepository
{
    Employee GetEmployeeById(long id);
}
Run Code Online (Sandbox Code Playgroud)

我们可以轻松地创建一个这样的模拟:

public class MockEmployeeRepository : IEmployeeRepository
{
    public Employee GetEmployeeById(long id)
    {
        Employee employee = new Employee();
        employee.FirstName = "First";
        employee.LastName = "Last";
        ...
        return employee;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,在我们的测试中,我们可以使用setter或依赖注入显式地告诉我们的服务使用MockEmployeeRepository.我是嘲笑框架的新手,所以我很好奇为什么我们使用它们,如果我们可以做到以上几点?

testing unit-testing mocking

10
推荐指数
1
解决办法
2319
查看次数

标签 统计

mocking ×2

testing ×2

unit-testing ×2