unit-testing - 如何在公共(public)类鼹鼠中转移 "non public"方法

标签 unit-testing moles pex

我有一个公共(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/

相关文章:

c# - 在自定义模拟类中创建返回 IDisposable 的方法

c# - 服务定位器模式下的单元测试

c# - Moling DataContext 与 MS Moles?

.net-3.5 - 测试可以用 3.5 MsTest 单元测试程序集编写吗?

c# - 在 Visual Studio 2015 RC 中使用 intelliTest 记录每个运行的测试场景

windows-installer - 安装过程中出现错误代码 2753

ruby-on-rails - 从父 Factory Girl 工厂访问子属性

java - Mockito 可以捕获多次调用的方法的参数吗?

javascript - 如何检查函数是否被调用?

c# - 如何在 C# 中向 PSObject 添加成员?