如何使用FakeItEasy伪造使用insut SUT的类

时间:2015-02-26 15:08:32

标签: fakeiteasy

我很难理解使用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,但在我的情况下它不是(这也是我不控制的遗留代码)。

有什么想法吗?

由于 ķ

1 个答案:

答案 0 :(得分:1)

new SomeDependentClass()内调用MethodToBeTested表示您获得了具体的实际SomeDependentClass实例。这不是假的,也不能是假的假货。

你必须能够通过MethodToBeTested的参数或者通过ToBeTested的一个构造函数或属性将伪类注入要测试的代码中(如你所说) 。

如果你不能这样做,FakeItEasy将无法帮助你。

如果你没有能力改变ToBeTested(我会问你为什么要为它编写测试,但这是暂时的),你可能需要使用另一个隔离框架。我已经将TypeMock Isolator用于你描述的那种情况,并且做得很好。