下面怎么做?正在测试的对象调用ReadAppSetting两次以获得两个不同的应用程序设置,并在无法找到时默认值。第一次调用返回null(这意味着第一个moq设置不起作用),第二次ReadAppSetting按预期返回(moq设置工作)。
var mock = new Mock<IConfigReader>();
mock.Setup(foo => foo.ReadAppSetting("PropA", "George"))
.Returns("George");
mock.Setup(foo => foo.ReadAppSetting("PropB", "5000"))
.Returns("5000");
MyClass objectUnderTest = new MyClass(mock.Object);
...
答案 0 :(得分:1)
如果模拟对象调用返回null
,那么您还没有提供与模拟设置中使用的完全相同的参数值。检查如何在MyClass
中调用配置阅读器。可能是您传递了错误的键值或错误的默认值。
BTW如果您希望配置阅读器返回所有调用的默认值,那么您可以使用单一设置:
mock.Setup(foo => foo.ReadAppSetting(It.IsAny<string>(), It.IsAny<string>()))
.Returns<string, string>((key, defaultValue) => defaultValue);