C# net类内方法调用

C# net类内方法调用,c#,.net,moq,C#,.net,Moq,我刚开始使用Moq,并且有一些逻辑问题 我有一个有两个方法的类,在该类中,方法一调用方法二,如下所示: 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 userst

我刚开始使用Moq,并且有一些逻辑问题

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

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我自己的类,我正在测试什么。我发现这是一个


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

你做错了。你不应该让你的SUT停止工作,因为这样做会让事情变得更复杂,而且没有测试正确的东西。 您应该使用moq(或任何其他模拟框架)来模拟SUT的合作者

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


HTH

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