0

我是使用 Moq 并遇到一些逻辑问题 atm 的新手。

我有一个有两个方法的类,该类方法一调用方法二,例如:

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 我正在测试的内容。我发现这是一个“解决方案”

但这对我来说没有解决方案(我认为),因为我尝试将一些功能封装在另一个功能中。这是我在做什么错了,还是我每次都必须创建一个新类来封装一个函数?

4

2 回答 2

1

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

于 2013-09-15T20:23:19.760 回答
0

你这样做是错的。您不应该对您的 SUT 起订量,因为这样做会使事情变得更复杂并且没有测试正确的事情。您应该使用 moq(或任何其他模拟框架)来模拟您 SUT 的合作者。

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

高温高压

于 2013-09-15T20:21:34.550 回答