Grails:ConfigObject.plus()在集成测试中不可用

时间:2011-10-17 07:04:58

标签: unit-testing testing grails missingmethodexception

我正在测试一个使用配置属性并将其连接到字符串的服务,如:

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

为什么在我的集成(或单元)测试中,plus运算符不可用?!

任何帮助表示赞赏

纳斯

3 个答案:

答案 0 :(得分:1)

这是您在未定义配置变量时看到的错误。您可能已在另一个环境中定义了test.directory,但未在test环境中定义。

在单元测试中,您应该使用mockConfig,如Don的回答所示,但在集成测试中,您可以像运行应用程序一样使用grails配置框架。

答案 1 :(得分:0)

我猜GrailsConfig.config.test.directory应返回一个字符串,但它返回一个ConfigObject(它不会使+运算符重载)。我从未尝试在集成测试中使用GrailsConfig,因此我不知道此代码是否可以正常工作。

更好的方法可能是使用mockConfig来模拟配置值。

答案 2 :(得分:0)

好的,我发现了这个问题......使用mockConfig时,所有字符串属性都必须在引号中,而在配置属性文件中不是这样。