用于从使用模拟对象和真实对象切换项目的模式

Ada*_*lor 1 c# design-patterns mocking

我正在研究使用模拟对象模式在我的应用程序中对层进行单元测试的想法.我面临的问题是如何在不进行单元测试时从模拟对象切换到真实对象.

我最初的反应是引用两个库(一个包含真实对象,一个包含模拟),并使用条件编译符号在两个名称空间之间切换.然而,这显然要求在没有UNITTEST符号的情况下重建项目(在通过单元测试之后)以便重新引用真实对象.

有没有实现这一目标的模式?

仅供参考,我的环境是c#2,如果它提供任何好处.

Pao*_*olo 7

您将需要查找依赖项注入以及对象应该通过构造函数接受其依赖项的方式,而不是自己创建它们.

例如,对比:

public MyClass()
{
    myDBConnection = new SqlConnection();
}
Run Code Online (Sandbox Code Playgroud)

VS

public MyClass(IDbConnection connection)
{
    myDBConnection = connection;
}
Run Code Online (Sandbox Code Playgroud)

在第二个中,您可以在单元测试中传递模拟数据库连接,在实际代码中传递真实内容.