如何在 C# 中模拟基类属性或方法



我在互联网上冲浪寻找 Nunit 测试用例中的模拟基类成员,但没有运气,最后决定让这个废料堆叠溢出社区。

下面的代码片段在我的应用程序中有场景。 我将为 BankIntegrationController 类编写单元测试,我想制作存根数据或模拟 IsValid 属性和打印方法。

重量:最小起订量,最小起订量

public class CController : IController
{
public bool IsValid {get;set;}
public string Print()
{
return  // some stuff here;
}
}
public class BankIntegrationController : CController, IBankIntegration
{
public object Show()
{
if(this.IsValid)
{
var somevar = this.Print();
}
return; //some object
}
}

你不需要嘲笑任何东西。只需在调用Show之前设置属性:

[Fact]
public void Show_Valid()
{
var controller = new BankIntegrationController { Valid = true };
// Any other set up here...
var result = controller.Show();
// Assertions about the result
}
[Fact]
public void Show_Invalid()
{
var controller = new BankIntegrationController { Valid = false };
// Any other set up here...
var result = controller.Show();
// Assertions about the result
}

当您想要指定依赖项在特定场景中的行为方式时(特别是当您想要验证代码如何与其交互时(,模拟是一种非常有价值的技术,但在这种情况下,您没有任何依赖项(您已向我们展示(。我观察到很多开发人员在三种情况下不必要地寻求模拟:

  • 当不涉及依赖(或其他抽象行为(时,就像这种情况一样
  • 当手写的虚假实现会导致更简单的测试
  • 当现有的具体实现更容易使用时。(例如,你很少需要模拟IList<T>- 只需在测试中通过一个List<T>

最新更新