【问题标题】:Grails unit test verify mock method calledGrails 单元测试验证模拟方法称为
【发布时间】:2014-02-03 05:23:01
【问题描述】:

在我的单元测试中,我模拟了一个服务(它是被测类的引用)。

喜欢:

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的verify方法很相似。

有人知道吗?

【问题讨论】:

    标签: unit-testing grails mockito grails-2.0


    【解决方案1】:

    您正在使用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 * xxx.yyy()(0调用)不匹配的调用(按相似度排序):
    • 这是一个好兆头。那你就在正确的轨道上。再次参考文档。如果可能,请提供服务类的确切实现以及其中 XxSevice 的用法。这可能会有所帮助。
    【解决方案2】:

    如果您希望在 Grails 单元测试中具有类似 Mockito 的行为 - 只需使用 Mockito。它比 Grails 的 mocking 方法方便得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      • 2014-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      相关资源
      最近更新 更多