禁用FakeItEasy的AutoMocking

Jen*_*ter 4 c# unit-testing fakeiteasy

说我有一个界面

public interface IDatabase
{
  IObjectSet<Table1> Table1 {get;}

  IObjectSet<Table2> Table2 {get;}

  //goes on to around Table400
}
Run Code Online (Sandbox Code Playgroud)

所以当我用FakeItEasy创建一个实例时:

var fakeDb = A.Fake<IDatabase>();
Run Code Online (Sandbox Code Playgroud)

所有属性(表)都有一个默认的假值.我可以看到为什么这在大多数情况下都很方便,但在我的情况下,我需要所有这些null

这样做有一个聪明的方法吗?

Dro*_*per 5

我不确定它是如何工作的,但我发现你可以设置对一个对象的所有调用的期望:

[TestMethod]
public void TestMethod1()
{
    var fake = A.Fake<IDatabase>();
    fake.AnyCall().DoesNothing();

    var result = fake.Table1;

    Assert.IsNull(result);
}
Run Code Online (Sandbox Code Playgroud)

通过使用AnyCall,您可以设置对特定伪造的所有调用的期望 - 在这种情况下,DoesNothing返回默认值null