目前我有一个Grails服务,它实际上是向AMQP提供商发布消息。我想通过替换publish方法来存储消息发布,这样它就不会发布到AMQP,而是将消息存储在列表中
示例:
class AService {
EventPublisherService eventPubliserService
def createSomething() {
eventPublisherService.publishEvent(..)
}
}
有没有办法存根“创造一些方法”'在集成测试中,我可以稍后在列表中查看已发布的事件吗?
答案 0 :(得分:0)
您可以使用闭包映射模拟eventPublisherService
,其中键是要模拟的方法的名称。然后在闭包内,您可以测试传递的消息列表。之后恢复服务,以免影响其他测试。
class AServiceTests extends GroovyTestCase {
def aService
def eventPublisherService
@After
protected void tearDown() {
super.tearDown()
aService.eventPublisherService = eventPublisherService
}
void testSomething() {
aService.eventPublisherService = [publishEvent: { messages ->
assert messages.size() == 5
// etc.
}]
// continue testing
}
}