Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing Grails测试中的模拟配置_Unit Testing_Grails_Groovy_Mocking - Fatal编程技术网

Unit testing Grails测试中的模拟配置

Unit testing Grails测试中的模拟配置,unit-testing,grails,groovy,mocking,Unit Testing,Grails,Groovy,Mocking,在Grails2.0.X之前,可以使用测试扩展的基类提供的mockConfig方法模拟配置。但是,在Grails2.0.X中,建议测试类使用@TestFormixin,而不是扩展基类 这个mixin似乎没有提供任何与mockConfig方法等价的东西,因此我无法理解如何在Config.groovy中模拟值,因为看起来mockConfig()在Grails 2.x中已经不存在了。这个怎么样: def mockConfig = new ConfigObject() mockConfi

在Grails2.0.X之前,可以使用测试扩展的基类提供的
mockConfig
方法模拟配置。但是,在Grails2.0.X中,建议测试类使用
@TestFor
mixin,而不是扩展基类

这个mixin似乎没有提供任何与
mockConfig
方法等价的东西,因此我无法理解如何在
Config.groovy

中模拟值,因为看起来mockConfig()在Grails 2.x中已经不存在了。这个怎么样:

    def mockConfig = new ConfigObject()
    mockConfig.some.config.setting = "foo"

    def myService = new MyService()
    myService.grailsApplication = [config: mockConfig]

在新的Grails2.x测试中,似乎已经有了一个
config
对象。这么说就足够了

config.some.config.setting = 'foo'
然后可以从被测对象的
@TestFor
中访问

如果您需要手动创建对象,那么在测试范围内还有一个
grailsApplication
对象,
config
对象就属于该对象。所以这应该是可行的-

config.some.config.setting = 'foo'
def myService = new MyService(grailsApplication:grailsApplication)
我这样做(在测试服务时):


无需进行其他模拟。

您可以访问grailsApplication.config,因此可以根据需要修改这些值,以便执行以下操作

grailsApplication.config.some.config.setting = 'foo'
通过这种方式(使用
service.grailsApplication
而不仅仅是公认答案中建议的
grailsApplication
),您还可以避免将配置泄露给其他测试,这可能会使它们变得不稳定,因此+1,谢谢。
grailsApplication.config.some.config.setting = 'foo'