【问题标题】:Integration testing Grails services with injection使用注入集成测试 Grails 服务
【发布时间】:2011-09-02 14:53:20
【问题描述】:

我在集成测试我的 Grails 服务时遇到问题,因为被测服务没有被注入到我的测试中。我已遵循 Stackoverflow 上其他问题的答案中的建议,但目前还无法注入我的服务。以下类在/<project_root>/test/integration/com/example下:

package com.example

import grails.test.GrailsUnitTestCase

class MyServiceIntegrationTest extends GroovyTestCase {

    MyService service;

    public void testService() {
        assert service != null
    }
}

我尝试从命令行 (grails test-app) 和 IDEA 中执行两者都导致相同的失败,即 servicenull

这是 Grails 1.3.6

请对如何让我的集成测试工作有任何建议吗?

【问题讨论】:

    标签: grails groovy integration-testing


    【解决方案1】:

    自动装配在集成测试中的工作方式与在框架的其他部分中的工作方式相同,因此您需要确保属性的命名与服务类似,但使用适当的 unCamelCase。

    class MyServiceIntegrationTest extends GroovyTestCase {
        def myService
    
    }
    

    假设您的服务是一个名为 MyService 的对象。

    【讨论】:

    • 正确 - 它是按名称自动注入,而不是按类型。您可以将该字段键入为 MyService myService(例如,用于 IDE 自动完成)或使用 def,但这是对注入很重要的名称。
    • 谢谢,我认为我的困惑来自于我在应用程序的其余部分中使用按类型自动连接
    • 顺便说一句,在这种情况下,使用 def 时,IntelliJ 实际上会提供与使用类型时相同的自动完成功能。它知道春豆,并推断出类型。很酷!
    • 对我来说,虽然 intelliJ 显示了它的自动连线,但运行时我的 myService 为空。有什么想法吗?
    猜你喜欢
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 2012-08-31
    相关资源
    最近更新 更多