【问题标题】:Accessing grailsApplication from spock unit test testing code in src/groovy从 src/groovy 中的 spock 单元测试测试代码访问 grailsApplication
【发布时间】:2014-08-21 05:39:12
【问题描述】:

我正在尝试使用 Spock 测试 src/groovy 中的一些代码。我正在测试的代码引用 grailsApplication。由于在 src/groovy 中,所以我使用依赖注入将 grailsApplication 注入到 bean 中,如下所示:

ticketRequestEmailInfo(TicketRequestEmailInfo) {
    grailsApplication = ref('grailsApplication')
}

我遇到的问题是,当测试代码遇到引用 grailsApplication 的代码行时,我得到了 NullPointerException:

java.lang.NullPointerException: Cannot get property 'config' on null object

我的测试类有以下内容:

@TestMixin(GrailsUnitTestMixin)
class TicketRequestEmailInfoSpec extends Specification {
    def setup() {
        grailsApplication.config.acme.purchase.trsUrlBase = "http://localhost:8082/purchase/order/"
}

有人有什么建议吗?

【问题讨论】:

    标签: java unit-testing grails groovy spock


    【解决方案1】:

    试试Holders.grailsApplication.config:

    @TestMixin(GrailsUnitTestMixin)
    class TicketRequestEmailInfoSpec extends Specification {
        def setup() {
            Holders.grailsApplication.config.acme.purchase.trsUrlBase = "http://localhost:8082/purchase/order/"
    }
    

    【讨论】:

      【解决方案2】:

      注入grailsApplication 以测试def grailsApplication 不起作用?

      您也可以将其导入为import static grails.util.Holders.config as grailsConfig

      然后把它当作

      @TestMixin(GrailsUnitTestMixin)
      class TicketRequestEmailInfoSpec extends Specification {
          def setup() {
              grailsConfig.acme.purchase.trsUrlBase = "http://localhost:8082/purchase/order/"
      }
      

      【讨论】:

      • 在测试中使用 def grailsApplication 会产生 NullPointerException。一定是因为我正在测试的代码在 src/groovy 中。不过,按照上面的建议使用 Holders.grailsApplication.config 是可行的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2014-06-21
      • 1970-01-01
      • 2012-09-04
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      相关资源
      最近更新 更多