服务未注入Grails中的内联插件测试

时间:2013-05-30 04:09:29

标签: grails grails-plugin

我的目标是为我自己的Grails插件编写测试。到目前为止采取的步骤:

  1. 步骤 - 在里面创建单独的grails应用程序(在我们的示例中为testApp) Grails插件'测试'文件夹
  2. 步骤 - 制作插件 通过在BuildConfig.groovy

    中添加以下行来内联应用程序 - testApp

    grails.plugin.location.PluginName = '../../../../PluginName'

  3. 问题是在单元测试中,服务(来自内联插件)不会像单元测试中的常规应用程序那样注入。这是样本测试:

    @TestFor(SampleService)
    class SampleServiceUnitSpec extends UnitSpec {
        def "Sample Test"(){
            setup:
               def test = 'ok'
    
            when:
               test = "changed"
    
            then:
               assert service
               assert "changed" == test
        }
    }
    

    如果此测试是从grails应用程序运行并且服务是应用程序的一部分,则会注入服务。如果从包含该服务的内联插件的testApp运行此测试,则不会注入该服务。如果测试是插件单元测试并且插件中声明了服务,则不会注入该服务。

    如何注入服务以便进行测试?任何好的文档,posts.etc如何最好的测试Grails插件?谢谢

1 个答案:

答案 0 :(得分:0)

为什么要在应用程序内为插件服务创建单元测试。你的应用程序不应该只是担心他自己的代码吗?

我建议你分开你的顾虑:插件类应该在插件中测试,应用程序中的应用程序类。对于应用程序的观点,假设您的服务“应该正常工作”,因为它们在插件中经过了充分测试。

另外,我建议不要在Grails插件中创建应用程序。测试文件夹仅用于您的测试类,仅此而已。

如果您只想维护插件的最新版本,则只需创建一个应用程序(在插件外的另一个文件夹中),并始终在那里进行更新。

如果您需要维护多个版本或多个Grails版本,那么使用指定版本创建测试应用程序的Groovy脚本可能是更好的方法。