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

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

 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: [\]

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

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

Jonas

3 ответа

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

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

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

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

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

Другие вопросы по тегам