类方法调用中的 Moq .net

本文关键字:Moq net 调用 类方法 | 更新日期: 2023-09-27 18:31:27

我是使用最小起订量并遇到一些逻辑问题的新手。

我有一个类有两个方法,在该类中,方法一调用方法二,如下所示:

public class TestClass
{
  public virtual string FindUser(string user)
  {
    //do some Stuff
    string check = UserCheck("some string to check");
    //do some stuff
    return "some other userstring";
  }
  protected virtual string UserCheck(string blubb)
  {
    //do some other stuff
    return "some string";
  }
}
有时我会将某些功能

交换为其他函数,以将某些功能封装在同一类中。

我不知道如何使用 Moq 对此进行单元测试,因为我需要对我自己的类进行 Moq 我正在测试的内容。我发现这是一个"解决方案",

但这对我来说不是解决方案(我认为),因为我试图将某些功能封装在另一个函数中。我正在做的事情是错误的,还是我每次都必须创建一个新类来封装一个函数?

类方法调用中的 Moq .net

如果您的实现在方法调用中不使用另一个类,则可能不需要使用模拟。模拟您正在测试的实现(事件的一部分)是没有意义的。如果您认为它变得太复杂,请将它的某些部分封装在另一个类中,并将其用作依赖项。

你做错了。你不应该对你的SUT进行修改,因为这样做会让你的事情变得更复杂,不要测试正确的东西。你应该使用moq(或任何其他模拟框架)来模拟你的SUT的合作者。

因此,在您的情况下,您可以在不模拟UserCheck的情况下测试FindUser...因为需要该方法来完成该功能。