C# 如何在mock上设置默认返回null的方法?

C# 如何在mock上设置默认返回null的方法?,c#,autofixture,automoq,C#,Autofixture,Automoq,我使用AutoFixture和AutoMoq在这样的单元测试中模拟我的依赖关系 public class MyObject { public string Value { get; set; } } public interface IMyService { MyObject GetMyObject(); } public class Tests { [Fact] public void MyTest() { var fixture = new Fi

我使用AutoFixture和AutoMoq在这样的单元测试中模拟我的依赖关系

public class MyObject
{
   public string Value { get; set; }
}

public interface IMyService
{
   MyObject GetMyObject();
}

public class Tests
{
   [Fact]
   public void MyTest()
   {
      var fixture = new Fixture().Customize(new AutoMoqCustomization());
      var myService = fixture.Create<Mock<IMyService>>();

      // I want myObject to be null, but I'm getting a Mock<MyObject> instead
      var myObject = myService.Object.GetMyObject();    ​
   ​}
}
公共类MyObject
{
公共字符串值{get;set;}
}
公共接口IMyService
{
MyObject GetMyObject();
}
公开课考试
{
[事实]
公共无效MyTest()
{
var fixture=new fixture().Customize(new AutoMoqCustomization());
var myService=fixture.Create();
//我希望myObject为null,但我得到的是一个Mock
var myObject=myService.Object.GetMyObject();​
​}
}
我希望行
var myObject=myService.Object.GetMyObject();
返回
null
,但它返回一个
Mock
值。我知道我可以执行
myService.Setup(e=>e.GetMyObject())。返回((myObject)null);
显式地告诉它返回null,但我在整个测试过程中调用了许多类似的方法,我希望它们在默认情况下返回null,而不必显式地调用
Setup


有没有办法将fixture设置为默认情况下模拟返回的所有方法均为空?

来自注释的建议已接近。缺少的部分是将
AutoMoqCustomization
上的
cofiniguremembers
属性设置为
true
,以便AutoFixture可以解析成员们

[事实]
公共无效MyTest()
{
var fixture=新fixture()。自定义(新的自动自定义
{
ConfigureMembers=true,
});
fixture.Inject(null));
var myService=fixture.Create();
var myObject=myService.Object.GetMyObject();
Assert.Null(myObject);
}

.Customize(x=>x.FromFactory(()=>null)
?感谢您的建议。我尝试了您的建议,但仍然得到相同的行为。我认为问题在于
自动moqcustomization
,但我无法删除它,因为我需要它来创建我不希望为null的模拟。谢谢,这很有效。