c# - 如何在不实际执行查询的情况下测试查询数据库的方法?

标签 c# database unit-testing

我正在尝试编写一个单元测试,该测试将对从方法返回的字符串执行检查。该字符串是实体的一部分,应通过调用数据库生成。我可以轻松地 stub 这样的实体,但我不知道如何省略对数据库的调用,因为它是方法的一部分。

方法如下所示:

private string GetDescriptionForRelationEntry(string relAttrId, string client)
        {
            // here we are querying the database
            var relationEntities = new EntityDatabaseQuery<AttributeEntryEntity>();

            // the rest of the method
        }

指定为方法的其余部分的部分需要执行,因为我必须获取字符串结果才能执行必要的检查。所以,基本上,我只需要“伪造”一行代码。

现在我无法说明允许对 SUT 类进行多大程度的修改,因此我不会将此问题限制为任何特定的解决方案。任何帮助将不胜感激。

最佳答案

通常可测试类是某个接口(interface)的实现或某个抽象类的派生类。

因此,您可以使用反转控制容器框架,例如 CaSTLe Windsor、Ninject 或您可能更喜欢的任何框架,并提供整个接口(interface)的实现这不会访问数据库,但会返回测试查询结果。

关于c# - 如何在不实际执行查询的情况下测试查询数据库的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26095050/

相关文章:

c# - 什么时候为变量分配内存,是在声明时还是在初始化时?

c# - ServiceStack.Redis 类型的客户端不保存值

php - 如何使用 PHP 在 MySQL 数据库中存储和检索图像?

java - 模拟单元测试用例的网络响应

visual-studio-2010 - 使用 TestDriven.NET 和 NUnit 在测试类中运行所有测试

php - 单元测试自定义 symfony 约束

c# - CLR 字符串引用不(总是)匹配

c# - 从字典中的列表中获取第一个元素 C#

mysql - 回复消息的平均时间

c# - 没有数据库外键的 ORM