我的代码中的测试中包含以下代码。请注意,这个测试不是我写的,它调用的代码也不是我编写的,但我已经改变了。
mockedIMessage.Setup(m => m.ScriptMethodInvoker(EnumFunction.MsgFullSetPosition, It.IsAny<Result>())).Returns(1).Verifiable();
var result = GetTestExecutionResult(script);
mockedIMessage.Verify(m => m.ScriptMethodInvoker(EnumFunction.MsgFullSetPosition, It.IsAny<Result>()), Times.Once);
在原始代码上,这是有效的。在我的,它没有 - 它告诉我模拟的预期调用是0次,而不是曾经预期的。
然而,当我在调试模式中执行它时,它肯定会调用此代码,并在不抛出异常的情况下完成。因此代码似乎有效,但是Moq没有检测到它已被调用。
答案 0 :(得分:1)
根据您提供的内容,可能会出现多个错误:
ScriptMethodInvoker()
实例IMessage
ScriptMethodInvoker()
有重载,请确保调用正确的EnumFunction
是枚举EnumFunction
不是枚举,请确保EnumFunction.MsgFullSetPosition
始终返回相同的实例GetTestExecutionResult()
实际上拨打ScriptMethodInvoker()
。