What is “Mock You”系列之(四):自定义Mock对象行为 & MockFactory
2010-02-21 17:16 姜 萌@cnblogs 阅读(1389) 评论(0) 编辑 收藏 举报何谓Mock对象行为?
由于模拟出的对象终究是用来“糊弄人”的。我们在UnitTest中不一定会将一个对象的所有方法都Mock掉。而且如果一个Mock对象中有还有用接口/抽象类表示的对象,那么我们不一定就要将它们一起Mock掉。Moq为我们提供了自定义配置这些细节规则的办法。
MockBehavior
Moq有个枚举类型MockBehavior,有三个值Strict,Loose,Default。
Strict表示Mock对象在调用一个方法前这个方法必须被Mock掉,否则就会引发MockException。
而Loose与之相反,如果调用没有Mock的方法也不会出错。Default默认为Loose。
具体的设置方法是在new一个Mock<T>的时候。要注意Mock<T>中的Behavior属性是只读的。
[TestMethod] |
DefaultValue
我们再添加一个接口TargetInterfaceTwo用来演示DefaultValue在不同设定下Mock对象的不同行为。代码如下:
[TestMethod] mo.Object.one.MethodPure(); public interface TargetInterfaceTwo |
这里注意Mock类(一个抽象类)有一个静态方法Get<T>(T mock),如果Mock对象是被自动创建的,我们可以用它来获得这个Mock对象。
MockFactory
通过MockFactory我们可以批量生产我们自定义配置的Mock对象,并通过MockFactory.Verify/VerifyAlll来统一验证。示例如下。
[TestMethod] |