Spock对接口中未显示的动态方法抛出MissingMethodException

时间:2015-08-05 10:07:36

标签: grails groovy spock

我有一个扩展的groovy.lang.GroovyObject接口。 Implementor类没有公共构造函数,并且包含未在inteface中显示的动态方法。

我试图这样做:

bean.getResults() 

在调用时:

{{1}}

它会抛出groovy.lang.MissingMethodException。 实际上我没有进行接口契约,我只需要确保stubed对象返回预期的列表。

另外我不能存根实现者类,它会抛出CannotCreateMockException。

1 个答案:

答案 0 :(得分:1)

我似乎最终找到了解决方案。

必须使用Stub GroovyStub而不是Stub。这样就不允许对存根类的方法进行验证。 GroovyObject接口也不起作用,不得不使用GroovyObjectSupport抽象类:

def bean = GroovyStub(GroovyObjectSupport) 
bean.getResults() >> ['result1', 'results2']
assert bean.getResults() == ['result1', 'results2']