我很难理解使用FakeItEasy可以做什么和不能做什么。假设我有一个班级
public class ToBeTested{
public bool MethodToBeTested(){
SomeDependentClass dependentClass = new SomeDependentClass();
var result = dependentClass.DoSomething();
if(result) return "Something was true";
return "Something was false";
}
}
我做了类似下面的事情来伪造依赖类
var fakedDepClass = A.Fake<DependentClass>();
A.CallTo(fakedDepClass).WithReturnType<bool>().Returns(true);
我在测试MethodToBeTested时如何使用这个fakedDepClass。如果DependentClass作为参数传递,那么我可以传递我的fakedDepClass,但在我的情况下它不是(这也是我不控制的遗留代码)。
有什么想法吗?
由于 ķ
答案 0 :(得分:1)
在new SomeDependentClass()
内调用MethodToBeTested
表示您获得了具体的实际SomeDependentClass
实例。这不是假的,也不能是假的假货。
你必须能够通过MethodToBeTested
的参数或者通过ToBeTested
的一个构造函数或属性将伪类注入要测试的代码中(如你所说) 。
如果你不能这样做,FakeItEasy将无法帮助你。
如果你没有能力改变ToBeTested
(我会问你为什么要为它编写测试,但这是暂时的),你可能需要使用另一个隔离框架。我已经将TypeMock Isolator用于你描述的那种情况,并且做得很好。