Unit testing 在Grails中创建单元测试时,我应该依赖Config.groovy吗

Unit testing 在Grails中创建单元测试时,我应该依赖Config.groovy吗,unit-testing,grails,spock,Unit Testing,Grails,Spock,根据Grails文档 单元测试通常在没有物理层的情况下运行 涉及I/O的资源,如数据库、套接字连接或 档案 然而,当我使用Grails cmd行工具运行测试时,它包含Config.groovy,这意味着在我的测试代码中我有 Integer daysToRetain = grailsApplication.config.com.gleason.assignmentRetentionDays as Integer 这可以正确解决问题,而无需对其进行模拟。在我的单元测试中,我还有以下几点 impor

根据Grails文档

单元测试通常在没有物理层的情况下运行 涉及I/O的资源,如数据库、套接字连接或 档案

然而,当我使用Grails cmd行工具运行测试时,它包含Config.groovy,这意味着在我的测试代码中我有

Integer daysToRetain = grailsApplication.config.com.gleason.assignmentRetentionDays as Integer
这可以正确解决问题,而无需对其进行模拟。在我的单元测试中,我还有以下几点

import grails.util.Holders
...
Integer daysToRetain = Holders.config.com.gleason.assignmentRetentionDays as Integer

如果Config.groovy不是使用它的约定,grails为什么要加载它?此外,还可以依赖哪些其他文件?

Grails中的单元测试将引导一个最低可行的Grails运行时环境。这意味着配置,但不一定要加载与持久性相关的组件或插件(即hibernate数据源)

Grails文档并不是说在单元测试期间无法获得配置句柄,因为配置已嵌入到项目中。更确切地说,这意味着在单元测试期间不一定要有运行时服务器本地文件系统资源(特别是在CI中运行时)


大概是项目中的任何资源。

我个人会嘲笑它,因为以下原因之一:

如果您选择单元测试的隔离路径,那么显然
Config.groovy
将不是被测试的单元。因此,这意味着
Config.groovy
是一个外部依赖项,让测试不依赖可能更改的外部依赖项是一个好处,因为这样它就不会被错误的Config.groovy更改打破

如果您使用grails插件来分解grails应用程序,那么您将面临一个小的有线情况,即在测试模式下,您必须在插件中定义您的配置,因为单元测试在插件本地运行,而在运行应用程序的情况下,您必须在应用程序中设置它们,因为config.groovy默认情况下不会从插件中公开(这显然不是什么大问题,但无论如何)

但我看到的另一点是,通过模拟它,您可以在测试中显式地实现它,您希望从配置中获得特定路径(如
com.gleason.assignmentRetentionDays
),否则您只需要知道,因为它在您的实现中


此外,当只读取测试时,会更清楚地知道此特定配置设置的值。这并非在所有情况下都很重要,但有时在读取测试时知道会更好。

这些是个人设置的属性,因此它们实际上不是最小Grails运行时的一部分,这很重要吗?不是吗NF是否要加载部分配置文件而不是其他配置文件?加载的是整个配置文件,而不仅仅是其中的一部分。插件生态系统在单元规范中没有100%初始化。
Also, what other files are OK to rely on?