声明:
Author:赵志乾
Date:2017-7-30
Declaration:All Right Reserved!!!
参数匹配
1、参数匹配关联动作
可以通过不同的传入参数,让Mock对象的同一方法被调用时通过参数匹配来执行不同的动作。如下例所示:
allowing (calculator).add(1,1); will(returnValue(3)); allowing (calculator).add(2,2); will(returnValue(5)); allowing (calculator).sqrt(-1); will(throwException(new IllegalArgumentException());
2、参数匹配关联调用次数
可以通过不同的传入参数,来为Mock对象的同一方法调用指定不同的调用次数。如下例所示:
one (calculator).load("x"); will(returnValue(10)); never (calculator).load("y");
3、参数匹配规则
参数匹配是通过matchers来判定实际参数和预期参数是否相等。此处相等的含义拥有默认定义:对于大多数的参数,取决于其定义的equals方法;null会提前做检查,故可以放心的将null作为实际参数或者预期参数;数组的相等含义是指两者长度相同,且对应位置的元素均相等。
注:如果我们不想采用默认的参数匹配规则,可以在预期中给每个参数定义一个matchers。
注:本博客中的实例代码均来自于JMock Cookbook。