题
我有一种使用本地私人方法从数据库获取数据的公共方法。
private string SomeMethod(string)
{
...
Doing some operations
...
string data = GetDBData(string);
Doing some operations
...
}
我想使用摩尔数转移/隔离私有方法getDbData(String),因此我的测试不需要DB。
显然,我的问题是:如何做?谢谢乌里亚
编辑
附加信息:
我试图将方法访问器更改为公共和内部保护,在这两种情况下,我现在都可以将这些方法视为摩尔。但是,在运行测试时,仍在使用原始方法,而不是我在PexMethod中实现的弯路。
解决方案 2
我想到了
如果我有私人的私人物种
public class MyClass
{
private string SomeMethod(string str){}
}
如果要摩尔的物种方法方法,则需要在测试方法中使用allinstances:
[PexMethod]
SomeMethod(string str)
{
MMyClass.AllInstances.SomeMethod = (instance, str) => { return "A return string"; };
}
- 请注意,lambda接收实例参数作为第一个参数。我不确定它的功能是什么。
其他提示
您可以尝试以下任何一个。
制作方法 内部的 并将类似的属性添加到组件中:
[assembly: InternalsVisibleTo("<corresponding-moles-assembly-name>")]
更改方法访问 受保护的虚拟 然后使用存根。
- 对您的类重构,以便将接口(idataAccessObject)作为构造函数参数,对该接口的方法之一,然后在测试方法中将该接口的存根传递给您的类。
不隶属于 StackOverflow