首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安装程序似乎没有注册,并且引发了MockException

安装程序似乎没有注册,并且引发了MockException
EN

Stack Overflow用户
提问于 2011-09-21 11:08:50
回答 2查看 3.6K关注 0票数 2

我有这些模仿者:

代码语言:javascript
复制
_processWrapperMock = new Mock<IProcessWrapper>(MockBehavior.Strict);
_processStartInfoMock = new Mock<IProcessStartInfo>();

以及Start()方法的设置:

代码语言:javascript
复制
_processWrapperMock.Setup(m => m.Start(_processStartInfoMock.Object))
                   .Returns(new Process());

我的_processWrapperMock实例被传递给对象的构造函数,该构造函数包含我正在测试的方法。

代码语言:javascript
复制
var wrapper = new WrapperClassImTesting(_processWrapperMock.Object);

然后执行正在测试的方法:

代码语言:javascript
复制
byte[] output = wrapper.MethodImTesting(someParams);

MethodImTesting中,执行_processWrapperMockStart方法,但是我以前的设置似乎没有被考虑在内。我得到的错误是在线上:

代码语言:javascript
复制
using (var process = _processWrapper.Start(processStartInfo))

投掷:

模拟异常未被用户代码处理

严格的模拟行为导致IProcessWrapper.Start(GraphVizWrapper.ProcessStartInfo)调用失败。模拟上的所有调用都必须有相应的设置。

我在做什么/不做什么,我需要做什么才能像我期望的那样起作用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-21 11:12:56

为什么还要制造一个模拟..。你就不能这么做吗?

代码语言:javascript
复制
_processWrapperMock.Setup(m => m.Start(It.IsAny<IProcessStartInfo>)).Returns(new Process());

您确定没有其他方法或属性正在被访问吗?

票数 2
EN

Stack Overflow用户

发布于 2011-09-21 11:14:31

这不只是意味着在模拟中调用了一个没有使用SetUp方法显式考虑的方法吗?

我通常避免严格的模拟,因为它们会导致脆弱的测试,但是如果您确实需要它们,那么我将确保没有任何东西被调用,而不是您所期望的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7498729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档