11
16
期望方法多于(少于)一次
入门仅演示了期望对一个模拟对象的一个调用.测试经常需要使用不同基准的期望来允许一些方法调用发生,但如果不发生不会失败,期望方法被调用多次或不是全部,或忽略不相关的拟对象.
一个期望的调用次数定义了期望的这个方法允许被调用最小和最大次数.它在期望中的模拟对象前被指定.
invocation-count (mock).method(parameters); ...
JMock定义了下列基准:
| one | 调用期望一次且仅一次. |
| exactly(n).of | 调用期望正是n次.注意:one是exactly(1)方便的表达. |
| atLeast(n).of | 调用期望至少n次. |
| atMost(n).of | 调用期望最多n次. |
| between(min, max).of | 调用期望至少min次,最多max次. |
| allowing | 调用允许任何次但不必须发生. |
| ignoring | 和allowing相同. Allowing和ignoring应该被选择来使测试代码清晰表达意图. |
| never | 调用根本不期望.这会使测试更加明确和易懂. |
Expecting vs. Allowing
expecting和allowing一个调用时最重要的区别是基准表达.
如果一个调用是允许的,在测试中它可以发生,但如果调用不发生,测试依然通过.如果一个调用被期望,则相反,它必须在测试中发生,如果它不发生,测试失败.当定义期望时你必须选择是期望还是允许每个调用.总的来说,我们发现如果你允许查询和期望命令测试可以保持灵活.一个查询是除了查询对象状态没有任何副作用的方法,一个命令是可以返回也可以不返回结果有副作用的方法. 当然,这并不适用于所有情况.如果你在测试中期望的方法被调用的次数没有其它约束遵循经验方法是有用的.
相关日志
本站文章除特别标示外,其他文章都属于原创内容,转载请按以下格式注明:
本文来源:舞命小丢
原文链接:http://thinking.5ming.org.cn/2008/11/16/jmock-cookbook-cardinality/
TrackBack:http://thinking.5ming.org.cn/2008/11/16/jmock-cookbook-cardinality/trackback/

[...] « jMock Cookbook期望方法多于(少于)一次 [...]
评论时间: 11月 16th, 2008 at 12:12 上午