Spock 存根模拟对象不起作用

Spock 存根模拟对象不起作用,spock,Spock,我有一个工厂类carfactory,我为它创建了一个模拟对象 def mockCar = Mock(Car) def mockFactory = Mock(CarFactory) this.mockCar.getDoors(_) >> ["a","b"] this.mockFactory.getCar(_) >> this.mockCar 现在,当测试运行时,我从工厂得到一个mockCar对象,而不是从getDoors(_)调用得到的集合。 我得到一个空集。this

我有一个工厂类carfactory,我为它创建了一个模拟对象

def mockCar = Mock(Car)
def mockFactory = Mock(CarFactory)
this.mockCar.getDoors(_)   >> ["a","b"]
this.mockFactory.getCar(_) >> this.mockCar
现在,当测试运行时,我从工厂得到一个mockCar对象,而不是从getDoors(_)调用得到的集合。
我得到一个空集。

this.的用法不正确,因为
mockCar
mockFactory
是局部变量,而不是实例字段。修复此问题后,显示的代码工作正常(我只是再次签入)。如果返回的是一个空集,那么很可能您的真实代码还有另一个未显示的问题。

在实际代码中,当我调用carfactory,getcar时,问题就会出现,我返回了一个mockCar。然而,当我在下一行调用mockCar.getDoors时,我不再得到一个集合。您必须提供一个最小的可复制示例。从上面的my Spock Web Console链接中可以看出,您在最初的帖子中显示的代码工作正常(在修复了
这个。
)。另外,请确保使用最新的Spock版本(0.7),尽管我怀疑它会有所不同。