0

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

  1. 步骤 - 在 Grails Plugin 'test' 文件夹中创建单独的 grails 应用程序(在我们的例子中是 testApp)
  2. 步骤 - 通过在 BuildConfig.groovy 中添加以下行,使插件成为应用程序的内联 - testApp

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

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

@TestFor(SampleService)
class SampleServiceUnitSpec extends UnitSpec {
    def "Sample Test"(){
        setup:
           def test = 'ok'

        when:
           test = "changed"

        then:
           assert service
           assert "changed" == test
    }
}

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

如何注入服务以便对其进行测试?关于如何最好地测试 Grails 插件的任何好的文档、posts.etc?谢谢你

4

1 回答 1

0

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

我建议你把你的关注点分开:插件类应该在插件中测试,应用程序类在应用程序中测试。从应用程序的角度来看,假设您的服务“应该可以正常工作”,因为它们在插件中经过了很好的测试。

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

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

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

于 2013-05-30T12:59:08.843 回答