0

如何在下面做到这一点?被测对象调用 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);
...
4

1 回答 1

1

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

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

mock.Setup(foo => foo.ReadAppSetting(It.IsAny<string>(), It.IsAny<string>()))
    .Returns<string, string>((key, defaultValue) => defaultValue);
于 2013-10-24T16:29:47.707 回答