Moling 类型,保留特定方法的原始行为
我正在使用 Microsoft Moles,并对以下主题感到好奇:
- 有什么方法可以设置行为 某种类型(例如未实现)但是 保持a的原始行为 单一的具体方法?
我的目的是将要测试的方法与其类完全隔离(不知道从要测试的方法中调用的方法)。
以下代码对我不起作用,因为摩尔被完全禁用,并且任何使用的子方法都使用其原始行为:
MBaseObjectType.BehaveAsNotImplemented();
MolesContext.ExecuteWithoutMoles(() => mBaseObject.MethodToTest())
I'm using Microsoft Moles and am curious on the following topic:
- Is there any way to set the behaviour
of a type (eg. to unimplemented) but
keep the original behaviour of a
single specific method?
My intention is to completely isolate the method to test (without knowing the methods that are called from the method to test) from its class.
The following code doesn't work for me as moles is disabled completely and any used submethod uses its original behaviour:
MBaseObjectType.BehaveAsNotImplemented();
MolesContext.ExecuteWithoutMoles(() => mBaseObject.MethodToTest())
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我猜你只能使用存根来实现这种行为。
这是一个代码示例。我们将调用
MethodToTest
,ClassUnderTest
的所有其他方法将抛出BehaviorNotImplementedException
类型的异常。Moles 为我们生成一个名为
SClassUnderTest
的存根类,我们将用它来调用MethodToTest
。I guess you can only use a stub to achieve this behavior.
Here is a code sample. We will call
MethodToTest
, all the other methods ofClassUnderTest
will throw an exception of typeBehaviorNotImplementedException
.Moles generates a stub class for us called
SClassUnderTest
which we will use to callMethodToTest
.可以为所有或特定的 Mole 实例保留原始行为。 Fallthrough 行为会禁用未注册方法的 Moles。
参考: http://social .msdn.microsoft.com/Forums/en-US/pex/thread/39af5a02-1cc9-4cf3-a254-3bdc923175db
The original behavior may be preserved for all or specific Mole instances. The Fallthrough behavior disables Moles for unregistered methods.
Reference: http://social.msdn.microsoft.com/Forums/en-US/pex/thread/39af5a02-1cc9-4cf3-a254-3bdc923175db