【问题标题】:How is grailsApplicaiton initialized in a grails spock unit test?如何在 grails spock 单元测试中初始化 grailsApplicaiton?
【发布时间】:2014-08-27 11:27:18
【问题描述】:

我有一个非常基本的 grails 2.2.4 spock 测试,它没有正确初始化 grailsApplication。

@TestMixin(GrailsUnitTestMixin)
class SampleUnitSpec extends Specification {

    void "test fixture"() {
        expect:
        Holders.grailsApplication           // This is null and the test fails 
    }
}

如何对使用 Holders.grailsApplication 的服务/控制器进行单元测试?

【问题讨论】:

  • 因为是单元测试,现在只测试SampleUnit。所以,它不会初始化 grailsApplication 或任何其他东西。如果你想使用 grailsApplication,你应该考虑使用集成测试。
  • 看看 GrailsUnitTestMixin.initGrailsApplication。它创建了一个 grailsApplication,但它的设置方式与 Holders.grailsApplication 不兼容。
  • 找到解决方案了吗?

标签: spring grails groovy spock


【解决方案1】:

grailsApplication 默认情况下可用于单元测试。只需直接使用它(即使没有在测试中将其声明为def grailsApplication)。下面的测试应该通过。如果仍有疑问,请在expect: 中打印grailsApplication.config

@TestMixin(GrailsUnitTestMixin)
class SampleUnitSpec extends Specification {

    void "test something"() {
        expect:
            !grailsApplication.config.isEmpty()
    }
}

【讨论】:

  • 我的测试类使用 Holders.grailsApplication 来访问配置和 bean。所以不能使用本地的grailsApplication实例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 2016-06-17
  • 1970-01-01
  • 2020-07-22
  • 1970-01-01
  • 2023-03-23
相关资源
最近更新 更多