2014-08-27 65 views
1

我有一个非常基本的grails 2.2.4 spock测试,它不能正确初始化grailsApplication。GrailsApplicaiton在grails spock单元测试中如何初始化?

@TestMixin(GrailsUnitTestMixin) 
class SampleUnitSpec extends Specification { 

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

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

+0

因为它是一个单元测试,现在只测试for'SampleUnit'。所以,它不会启动grailsApplication或其他任何东西。如果你想使用grailsApplication,你应该考虑使用集成测试。 – hakuna1811 2014-08-27 12:17:02

+0

看看GrailsUnitTestMixin.initGrailsApplication。它创建了一个grailsApplication,但它的设置方式与Holders.grailsApplication不兼容。 – 2014-08-27 13:04:14

+0

找到解决方案了吗? – 2017-12-01 12:00:57

回答

0

grailsApplication默认情况下可用于单元测试。直接使用它(即使没有在测试中声明它为def grailsApplication)。以下测试应通过。如果仍有疑问,请在expect:中输入grailsApplication.config

@TestMixin(GrailsUnitTestMixin) 
class SampleUnitSpec extends Specification { 

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

我的课程使用Holders.grailsApplication来访问配置和bean。所以本地的grailsApplication实例不能使用。 – 2014-08-27 15:35:43

+0

你试过了吗? – dmahapatro 2014-08-27 18:49:15

相关问题