如果您愿意,两个设置相交或重叠时会发生什么。
例如,在下面的场景中,设置重叠,因为显然"aSpecificString"
也被视为任何字符串。
Interface ISomeInterface
{
int SomeMethod(string param);
}
[TestMethod]
public void SomeClass_ShouldBehaveProperly_GivenSomeScenario()
{
var mock = new Mock<ISomeInterface>(MockBehavior.Strict);
mock.Setup(m => m.SomeMethod("aSpecificString"))
.Returns(100);
mock.Setup(m => m.SomeMethod(It.IsAny<string>()))
.Returns(0);
/*the rest of the test*/
}
我想知道它相交时会发生什么。
它是否会抛出异常,或者是否无法检测到重叠并按照添加顺序使用第一个匹配的设置?
我认为避免重叠设置是最好的。
答案 0 :(得分:5)
不要沿着你要走的路走下去。我只看到了大量的痛苦。相反,请使您的Return
有条件:
mock.Setup(m => m.SomeMethod(It.IsAny<string>()))
.Returns((string parameter) => parameter == "aSpecificString" ? 100 : 0);
我希望在您开始制作重要代码之前,我已设法与您联系......
答案 1 :(得分:2)
根据在线发现的文件,最后一次通话赢得并取消之前的通话。
所以即使在你的情况下,如果测试是打电话
SomeMethod("aSpecificString")
它会根据您示例中的设置返回0
。