【问题标题】:Grails / Spock testing provide stubbed implementation for a serviceGrails / Spock 测试为服务提供存根实现
【发布时间】:2015-12-09 12:19:39
【问题描述】:

目前我有一个 Grails 服务,它实际上将消息发布到 AMQP 提供程序。我想通过替换 publish 方法来存根消息发布,这样它就不会发布到 AMQP,而是将消息存储在列表中

例子:

class AService {
    EventPublisherService eventPubliserService
    def createSomething() {
        eventPublisherService.publishEvent(..)
    }
}

有没有办法在集成测试中存根“createSomethingMethod”,以便稍后在列表中检查已发布的事件?

【问题讨论】:

  • 为什么只替换 publishEvent() 方法而不是整个 EventPublisherService 对象?

标签: grails testing spock


【解决方案1】:

您可以使用闭包映射模拟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
    }
}

【讨论】:

    猜你喜欢
    • 2012-03-29
    • 1970-01-01
    • 2013-09-09
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    相关资源
    最近更新 更多