如何使用 spock 在 grails 中模拟相同 class 的多个方法?

How to mock multiple methods of same class in grails using spock?

我有一个单元测试,我想在其中模拟服务的两种方法。我知道怎么做一次:

def caseHistoryMock = mockFor(CaseHistoryService)
        caseHistoryMock.demand.getLatestCaseHistory(1..1) {String caseNumber, String productFamily -> return caseHistoryObj }
        controller.caseHistoryService = caseHistoryMock.createMock()

如何模拟 caseHistoryService 的另一个方法。我的控制器中的方法调用如下:

def caseHistoryObj = caseHistoryService.getLatestCaseHistory(alert.caseNumber, alert.productFamily)

caseHistoryService.saveCaseHistory(caseHistoryMap)

*我正在使用 grails 2.5.1。 提前致谢, 抱歉

您可以使用 Mock 函数模拟它:

def caseHistoryMock = Mock(CaseHistoryService)
1 * caseHistoryMock.getLatestCaseHistory(_, _) >> caseHistoryObj
1 * caseHistoryMock.saveCaseHistory(_)
controller.caseHistoryService = caseHistoryMock

1 * 是可选的,它描述了函数调用的频率。