鉴于以下内容,我如何使用 Spock 模拟 processMessage(),以便我可以检查 processBulkMessage() 调用 processMessage() n 次,其中 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 或更新版本)。
After creating a spy, you can listen in on the conversation between the caller and the real object underlying the spy:
def subscriber = Spy(SubscriberImpl, constructorArgs: ["Fred"])
subscriber.receive(_) >> "ok"
Sometimes, it is desirable to both execute some code and delegate to the real method:
subscriber.receive(_) >> { String message -> callRealMethod(); message.size() > 3 ? "ok" : "fail" }
关于unit-testing - Grails/Spock : How to mock single method within class where method is called from within the class itself?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27446102/