Grails: ConfigObject.plus() недоступен в интеграционном тесте

Я тестирую службу, которая использует атрибуты конфигурации и объединяет их в строку, например:

 GrailsConfig.config.test.directory + System.getProperty('file.separator')
 + <filename>

При запуске теста для вышеуказанного метода, содержащего приведенный выше код, я получаю следующую ошибку:

groovy.lang.MissingMethodException: No signature of method:
groovy.util.ConfigObject.plus() is applicable for argument types:
(java.lang.String) values: [\]

Почему оператор «плюс» недоступен в моем интеграционном (или модульном) тесте?!

Любая помощь приветствуется

Йонас


person Jonas    schedule 17.10.2011    source источник


Ответы (3)


Это ошибка, которую вы видите, когда не определили переменную конфигурации. Вероятно, вы определили test.directory в другой среде, но не в среде test.

В модульном тесте вы должны использовать mockConfig, как предлагает ответ Дона, но в интеграционном тесте вы можете использовать структуру конфигурации grails так же, как при запуске приложения.

person Adam C    schedule 17.10.2011

Я предполагаю, что GrailsConfig.config.test.directory должен возвращать строку, но вместо этого он возвращает ConfigObject (что не перегружает оператор +). Я никогда не пробовал использовать GrailsConfig в интеграционном тесте, поэтому не знаю, будет ли этот код работать.

Лучшим подходом может быть имитация значений конфигурации с помощью mockConfig вместо этого.

person Dónal    schedule 17.10.2011

Хорошо, я нашел проблему ... Все атрибуты String должны быть в кавычках при использовании mockConfig, что не так в файле свойств конфигурации.

person Jonas    schedule 18.10.2011