c# – 模拟没有接口或虚方法的类

我想测试一个带有以下签名的方法.

int SomeMethod(List<Employee> employees)

这是相关的课程

public class Employee
{
    public int CustomerID { get; set; }
    public string LastName { get; set; }
    public string FirstName { get; set; }
    public Address Address { get; set; }

}

public class Address
{
    public string StreetName { get; set; }
    public string CityName { get; set; }
    public string State { get; set; }
    public string Country { get; set; }
    public string ZipCode { get; set; }
}

如何模拟List< Employee>作为SomeMethod的输入?请注意,Employee和Address类没有接口或虚方法.

最佳答案
如果您想使用以下签名int SomeMethod(List< Employee> employees)测试方法,则不需要模拟Employee!

您需要创建List< Employee> employees = new List< Employee>(),传递给方法并验证结果!

员工和地址是没有任何功能的模型,您不需要嘲笑它们!

以下是关于您案例的两个想法:

>您可以合法地在方法中调用新的Employee()或新的Address(),因为该代码是可测试的!创建模型的新实例不会执行外部依赖.
>只有在具有功能的情况下调用新的Employee()或新的Address()才会出现问题.在这种情况下,您将执行可能无法测试的真正依赖!例如,如果Employee或Address与数据库通信,则它是不可测试的,因为它将在执行测试时连接到真实数据库.比你需要创建模拟以避免数据库连接.

转载注明原文:c# – 模拟没有接口或虚方法的类 - 代码日志