【问题标题】:How to ignore a call of a method inside another method?如何忽略另一个方法中的方法调用?
【发布时间】:2018-02-07 17:29:49
【问题描述】:

我在 C# 中使用 Rhinomock,我想忽略方法内的调用。让我们看看,有没有人知道如何忽略(或跳过)以下代码示例中的方法 MyMethodToIgnore?使用 Rhinomock 可以做到这一点吗?

public void MyMethod()
{
 string sample = string.Empty;

 var n = MyMethodToIgnore(sample);

 // Rest of code...

}

让我们推断 MyMethodToIgnore 执行并返回一些东西。

【问题讨论】:

  • MyMethodToIgnore 返回什么类型?
  • 你能提供一些关于MyMethodToIgnore的实现细节吗?
  • 我们推断它返回了一些东西,例如:private int MyMethodToIgnore(string sample){ return 1;}

标签: c# unit-testing rhino-mocks


【解决方案1】:

根据您提供的代码示例,没有!

您提到的模拟库是提供虚假数据类,因此您的测试用例不依赖于例如的状态和可用性。一个数据库。不与程序流交互。

其目的是通过允许开发人员创建自定义对象的模拟实现并使用单元测试验证交互来简化测试。 Source

因此,如果您希望您的测试模拟 MyMethodToIgnore 的行为,您需要更改源代码以使 MyMethod 纯(这样它就不会依赖于中间结果。

一种可能性是向该类添加另一种方法,如下所示:(我正在使用vardynamic,因为您还没有提供任何实现细节。)

public void MyMethod()
{
    var n = MyMethodToIgnore(sample);
    MyTestedMethod(n);
}

public void MyTestedMethod(dynamic n) {
  // do the calculation
}

这样,您可以覆盖/模拟MyMethodToIgnore 的行为并使用模拟结果来测试您的MyTestedMethod

【讨论】:

  • 只需将您的单元测试指向MyTestedMethod 而不是MyMethod
猜你喜欢
  • 1970-01-01
  • 2012-09-03
  • 2015-06-16
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多