2015-01-29 4 views
0

Мне нужно получить источник сообщений, чтобы получить доступ к файлу message.properties в простом классе groovy (класс исключения), так что я использую Holders.getGrailsApplication(). Моя проблема Holders.getGrailsApplication() получает значение null, когда я выполняю блок-тест. Он отлично работает, если я развертываю его на веб-сервере. Variable: -Облицовочная проблема с модульным тестированием в Grails

static def grailsApplicationCntx=Holders.getGrailsApplication().getMainContext().getBean(‘messageSource’) 

Ошибка: -

`Failure: testActivateService_Case1(com.xyz.ActivationServiceTests) 
| java.lang.ExceptionInInitializerError 
at java.lang.Class.forName(Class.java:186) 
at com.xyz.DatabaseService.addBankUser(DatabaseService.groovy:11) 
at com.xyz.RegisterService.register(RegisterService.groovy:39) 
at com.xyz.ActivationServiceTests.setUp(ActivationServiceTests.groovy:60) 
Caused by: java.lang.NullPointerException: Cannot invoke method getMainContext() on null object 
at com.xyz.exception.Exception.(Exception.groovy:55) 
… 4 more 
+0

Вы пробовали запустить этот тест с помощью «GrailsUnitTestMixin»? (http://www.grails.org/doc/latest/api/grails/test/mixin/support/GrailsUnitTestMixin.html) –

+0

Да, я использую аннотацию, но я думаю, что контекст приложения не получает нагрузку в соответствующем классе, когда единица тест выполняется. – Saras

ответ

0

Я не думаю, что нет необходимости вводить messageSource. Он уже доступен. Просто используйте

messageSource.addMessage("foo.bar", request.locale, "My Message") 
+0

messageSource недоступен в простом классе groovy. – Saras