用不同的参数调用相同的方法两次

时间:2013-10-24 16:02:05

标签: c# unit-testing moq

下面怎么做?正在测试的对象调用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);
...

1 个答案:

答案 0 :(得分:1)

如果模拟对象调用返回null,那么您还没有提供与模拟设置中使用的完全相同的参数值。检查如何在MyClass中调用配置阅读器。可能是您传递了错误的键值或错误的默认值。

BTW如果您希望配置阅读器返回所有调用的默认值,那么您可以使用单一设置:

mock.Setup(foo => foo.ReadAppSetting(It.IsAny<string>(), It.IsAny<string>()))
    .Returns<string, string>((key, defaultValue) => defaultValue);