给定以下内容,我如何使用Spock模拟processMessage(),以便可以检查processBulkMessage()调用n次processMessage(),其中n是BulkMessage中的消息数?

class BulkMessage {
    List messages
}

class MyService {

    def processBulkMessage(BulkMessage msg) {
        msg.messages.each {subMsg->
            processMessage(subMsg)
        }
    }

    def processMessage(Message message) {

    }
}

最佳答案

您可以使用spies和部分模拟(需要Spock 0.7或更高版本)。


def subscriber = Spy(SubscriberImpl, constructorArgs: ["Fred"])
subscriber.receive(_) >> "ok"


subscriber.receive(_) >> { String message -> callRealMethod(); message.size() > 3 ? "ok" : "fail" }

10-08 12:48