如何在模拟上设置方法以默认返回 null?

问题描述

我正在使用 AutoFixture 和 automoq 在这样的单元测试中模拟我的依赖项

expo start

我希望行 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> 来明确告诉它返回 null,但是我在整个测试过程中都调用了许多类似的方法,我希望它们认返回 null,而不必显式调用 {{ 1}} 在他们身上。

有没有办法设置夹具让所有方法认返回 myService.Setup(e => e.GetMyObject()).Returns((MyObject)null);

解决方法

评论中的建议很接近。缺少的部分是将 here \n is \r an example\ of a text\ to test here \n is \r an example of a text to test 上的 CofnigureMembers 属性设置为 AutoMoqCustomization,以便 AutoFixture 可以解析成员的实例。

true

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...