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
这样做有一个聪明的方法吗?
我不确定它是如何工作的,但我发现你可以设置对一个对象的所有调用的期望:
[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