2014-08-27 3 views
1

У меня есть действительно базовый grails 2.2.4 spock test, который не инициализирует grailsApplication правильно.Как grailsApplicaiton инициализируется в тесте на грабли?

@TestMixin(GrailsUnitTestMixin) 
class SampleUnitSpec extends Specification { 

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

Как я могу тестировать службы/контроллеры, использующие Holders.grailsApplication?

+0

Потому что это единичный тест, и теперь он проверяет только на 'SampleUnit'. Таким образом, он не будет инициировать grailsApplication или что-нибудь esle. Если вы хотите использовать grailsApplication, вам следует рассмотреть возможность использования теста интеграции. – hakuna1811

+0

Посмотрите на GrailsUnitTestMixin.initGrailsApplication. Он создает приложение grailsApplication, но способ его настройки несовместим с Holders.grailsApplication. –

+0

нашел решение еще? –

ответ

0

grailsApplication доступен для тестирования модулей по умолчанию. Просто используйте его напрямую (даже не объявив его def grailsApplication в тестах). Ниже тест должен пройти. Если все еще есть элемент сомнения, напечатайте grailsApplication.config в expect:.

@TestMixin(GrailsUnitTestMixin) 
class SampleUnitSpec extends Specification { 

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

В моем тестируемом классе используется Holders.grailsApplication для доступа к config и beans. Таким образом, локальный пример grailsApplication не может быть использован. –

+0

Вы уже пробовали? – dmahapatro

Смежные вопросы