C# 如何在mock上设置默认返回null的方法?
我使用AutoFixture和AutoMoq在这样的单元测试中模拟我的依赖关系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
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的模拟。谢谢,这很有效。