Внедрение зависимостей в интеграционных тестах Grails - PullRequest
6 голосов
/ 16 февраля 2010

Я тестирую службу моего приложения, которая зависит от других служб во время выполнения. При тестировании внедрение зависимостей, похоже, не работает. Работает ли внедрение зависимостей в артефактах Grails при выполнении интеграционных тестов?

Ответы [ 2 ]

8 голосов
/ 16 февраля 2010

Да, при запуске тестов (т. Е. Тестов в каталоге интеграции) приложение запускается, и все компоненты создаются и внедряются, как если бы приложение действительно выполнялось. Единственная разница между тестовым приложением и запущенным приложением должна заключаться в среде конфигурации.

Конечно, если вы создадите экземпляр класса, который требует внедрения с использованием оператора «new» в вашем тесте, вы не получите преимуществ DI. Вместо этого создайте в своем тесте свойство для тестируемого компонента, и оно будет внедрено:

class MyServiceTests extends GrailsUnitTestCase {

    MyService service

    void testInjection() {
        assertNotNull service
    }
}
4 голосов
/ 22 мая 2012

Для тех из вас, кто использует Grails 1.3.7, я обнаружил, что вы не можете использовать имя класса, чтобы заставить внедрение зависимостей работать. Вместо этого объявите службу как:

def myService

и тогда происходит волшебство DI. При использовании приведенного выше кода в 1.3.7 утверждение, не равное NULL, не будет выполнено.

...