设置似乎没有注册,并且抛出了MockException
本文关键字:MockException 注册 设置 | 更新日期: 2023-09-27 18:09:08
我有这些mock:
_processWrapperMock = new Mock<IProcessWrapper>(MockBehavior.Strict);
_processStartInfoMock = new Mock<IProcessStartInfo>();
和Start()
方法的设置:
_processWrapperMock.Setup(m => m.Start(_processStartInfoMock.Object))
.Returns(new Process());
和我的_processWrapperMock
实例被传递给包含我正在测试的方法的对象的构造函数。
var wrapper = new WrapperClassImTesting(_processWrapperMock.Object);
然后执行我正在测试的方法:
byte[] output = wrapper.MethodImTesting(someParams);
在MethodImTesting
中,_processWrapperMock
的Start
方法被执行,但是我之前的设置似乎没有考虑到。我得到的错误在这行:
using (var process = _processWrapper.Start(processStartInfo))
扔:模拟异常未被用户代码处理
IProcessWrapper.Start (GraphVizWrapper.ProcessStartInfo)调用模拟行为失败。模拟上的所有调用必须有一个相应的设置
我在做什么/不做什么,我需要让它像我期望的那样工作?
为什么要创建一个mock呢?你就不能这么做吗?
_processWrapperMock.Setup(m => m.Start(It.IsAny<IProcessStartInfo>)).Returns(new Process());
你确定没有其他方法或属性正在被访问吗?
这是否意味着在mock上调用了一个方法,而您没有使用SetUp方法显式地解释这个方法?
我通常避免严格模拟,因为它们会导致脆弱的测试,但如果你确实需要它们,那么我会确保没有任何你不期望的东西被调用