大佬教程收集整理的这篇文章主要介绍了groovy – Spock验证模拟抛出的异常以及模拟交互,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
看下面的设置:
class B { def b(A a) { a.a() } } class A { def a() { } } def "foo"() { given: def a = mock(A) a.a() >> { throw new RuntimeException() } B b = new B() when: b.b(a) then: thrown(RuntimeException) 1 * a.a() }
上面的测试失败并显示消息:预期的异常java.lang.RuntimeException,但没有抛出异常,但设置mock的代码显式抛出了异常.
有趣的是,如果删除最后一行:1 * a.a(),测试通过.当在then块中放置另一个不验证异常的断言时,我没有类似的问题.
有什么想法正在发生什么?
@Grab('org.spockframework:spock-core:0.7-groovy-2.0') @Grab('cglib:cglib-nodep:3.1') import spock.lang.* class Test extends Specification { def "foo"() { given: def a = mock(A) B b = new B() when: b.b(a) then: thrown(RuntimeException) 1 * a.a() >> { throw new RuntimeException() } } } class B { def b(A a) { a.a() } } class A { def a() { } }
如果您同时模拟和验证交互,则应在where / then块中配置模拟行为.
以上是大佬教程为你收集整理的groovy – Spock验证模拟抛出的异常以及模拟交互全部内容,希望文章能够帮你解决groovy – Spock验证模拟抛出的异常以及模拟交互所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。