我正在尝试编写一个单元测试,该测试将对从方法返回的字符串执行检查。该字符串是实体的一部分,应通过调用数据库生成。我可以轻松地 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/