[英]How do I set up methods on mocks to return null by default?
我正在使用 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();
}
}
我想要行var myObject = myService.Object.GetMyObject();
返回null
,而是返回一个Mock<MyObject>
值。 我知道我可以做myService.Setup(e => e.GetMyObject()).Returns((MyObject)null);
明确告诉它返回 null,但是我在整个测试过程中调用了许多类似的方法,我希望它们默认返回 null,而无需我在它们上显式调用Setup
。
有没有办法设置夹具以使模拟上的所有方法默认返回null
?
评论中的建议很接近。 缺少的部分是将 AutoMoqCustomization 上的CofnigureMembers
属性AutoMoqCustomization
为true
,以便 AutoFixture 可以解析成员的实例。
[Fact]
public void MyTest()
{
var fixture = new Fixture().Customize(new AutoMoqCustomization
{
ConfigureMembers = true,
});
fixture.Inject<MyObject>(null));
var myService = fixture.Create<Mock<IMyService>>();
var myObject = myService.Object.GetMyObject();
Assert.Null(myObject);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.