【问题标题】:Shims and private methods垫片和私有方法
【发布时间】:2014-07-23 11:39:59
【问题描述】:

经过大量搜索,我只是找不到使用 shim 测试私有方法的方法。

这是我的课:

public class MyClass()
{
        private void AddWithRefPrivate(int x, int y, ref int result)
        {
            result = x + y;
        }
}

如何使用垫片测试AddWithRefPrivate 方法?

【问题讨论】:

  • 你没有。测试应该测试一个类的公共 API/行为。私有方法是一个实现细节。
  • 只测试使用这个私有方法的公共方法。将私有方法视为重构的孩子——它们只是更大的公共方法的可重用部分。没有它们,它们就是无稽之谈——不能被调用,不能被使用,不能做任何事情(它们甚至可以被编译器从生成的二进制文件中删除)。

标签: unit-testing shim


【解决方案1】:
using (ShimsContext.Create())
{
    ShimMyClass.AddWithRefPrivate =
        (int x, int y, ref int result) =>
        {
            result = x + y;
        };
}

【讨论】:

  • 您可以填充私有方法,但您将如何验证它。不能在该类之外调用私有方法。您将如何在 shim 上下文中调用私有方法。
猜你喜欢
  • 2015-05-19
  • 1970-01-01
  • 2015-07-13
  • 2013-04-15
  • 2011-09-29
  • 2021-11-03
  • 2012-02-18
  • 2012-11-05
  • 2017-05-23
相关资源
最近更新 更多