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.