Grails单元测试验证模拟方法调用

时间:2014-02-03 05:23:01

标签: unit-testing grails mockito grails-2.0

在我的单元测试中,我模拟了一个服务(这是被测试类的参考)。

像:

given:
def mockXxService = mockFor(XxService)
mockXxService.demand.xxx(1) {->}
service.xxService = mockXxService
when:
service.yyy()
then:
// verify mockXxService's xxx method is invoked.

对于我的单元测试,我想验证是否调用了mockXxService.xxx()。但grails文档的mockControl.verify()对我不起作用。不确定如何正确使用它。

它与mockito的验证方法非常相似。

有人知道吗?

2 个答案:

答案 0 :(得分:3)

您正在使用spock进行单元测试,您应该可以轻松地使用spock的MockingApi检查调用:

given:
    def mockXxService = Mock(XxService)
    service.xxService = mockXxService
when:
    service.yyy()
then:
    1 * mockXxService.xxx(_) //assert xxx() is called once

您可以从spockframework docs获得有关模拟的更多信息。

你甚至可以在模拟相关服务的同时存根和嘲笑:

def mockXxService = Mock(XxService) {
    1 * xxx(_)
}

答案 1 :(得分:2)

如果你想在Grails单元测试中使用类似Mockito的行为 - 只需使用Mockito。它比Grails的嘲弄方法更方便。