我是新手,使用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我自己的类我正在测试什么。我发现这是"solution",
但那对我来说没有解决方案(我认为)因为,我尝试将一些功能封装在另一个功能中。这是错误的我正在做什么或做什么我必须每次创建一个新类来封装一个函数?
答案 0 :(得分:1)
如果您的实现不在方法调用中使用另一个类,则可能不需要使用mock。模拟正在测试的实现(事件的某些部分)是没有意义的。如果您认为它过于复杂,请将其中的某些部分封装在另一个类中,并将其用作依赖项。
答案 1 :(得分:0)
你做错了。因为这样做会使事情变得更加复杂并且不能测试正确的事情,所以你不应该对你的SUT进行调整。 你应该使用moq(或任何其他模拟框架)来模拟你SUT的合作者。
因此,在您的情况下,您可以在不模拟UserCheck的情况下测试FindUser ...因为需要该方法来完成功能。
HTH