我有一个公共(public)方法,它使用本地私有(private)方法从数据库获取数据。
私有(private)字符串 SomeMethod(字符串)
{
...
进行一些操作
...
字符串数据 = GetDBData(字符串);
进行一些操作
...
}
我想使用moles转移/隔离私有(private)方法GetDBData(string),这样我的测试就不需要数据库了。
显然,我的问题是:该怎么做? 谢谢 尿利亚
编辑
附加信息:
我尝试将方法访问器更改为公共(public)和内部 protected , 在这两种情况下,我现在都可以将这些方法视为摩尔。 但是在运行测试时,仍然使用原始方法,而不是我在 PexMethod 中实现的绕道。
最佳答案
您可以尝试以下任一方法。
将方法设置为内部,并向程序集中添加如下属性:
[assembly: InternalsVisibleTo("<corresponding-moles-assembly-name>")]
将方法访问更改为 protected 虚拟,然后使用 stub 。
- 重构您的类,使其获取一个接口(interface) (IDataAccessObject) 作为构造函数参数,SomeMethod 是该接口(interface)的方法之一,然后在测试方法中将该接口(interface)的 stub 传递给您的类。
关于unit-testing - 如何在公共(public)类鼹鼠中转移 "non public"方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6806818/