gpt4 book ai didi

spring - 在grails.test.GrailsMock上设置属性

转载 作者:行者123 更新时间:2023-12-04 23:56:41 24 4
gpt4 key购买 nike

我似乎无法弄清楚如何在服务单元测试中为模拟服务设置属性。我试过使用需求对象和setProperty方法,这些方法似乎已经从Grails 2中消失了。

@TestFor(SomeService)
@Mock([HelperService])
class SomeServiceTests {

void testDoSomething() {
def helperService = mockFor HelperService

// tried this, error in method being tested
helperService.setProperty('propToSet',['a','b'])
// tried this, error in test
helperService.demand.propToSet = ['a','b']
// tried this, error in method being tested
helperService.demand.getPropToSet() {['a','b']}

service.helperService = helperService

assert service.doSomething('aa') != null
}
}

对于其中大多数错误,该错误是 No such property: propToSet for class: grails.test.GrailsMock,它是从我正在测试的方法中抛出的,它需要它。上面的第二个选项实际上给出了一个硬错误。如何在模拟的Grails对象中设置属性?

最佳答案

我对Grails的模拟工具也没有那么好的经验。所以我一直在使用GMock并对此感到满意。 GMock与所有Grails测试(包括 Controller ,服务和域类以及Spock的规范)配合得很好。

要使用它,只需将以下行放入grails-app / conf / BuildConfig.groovy中:

dependencies {
test 'org.gmock:gmock:0.8.2'
}

这是您代码的GMock版本。
@WithGMock
@TestFor(SomeService)
class SomeServiceTests {

void testDoSomething() {
def helperService = mock(HelperService)
helperService.propToSet.returns(['a', 'b'])
service.helperService = helperService
play {
assert service.doSomething('aa') != null
}
}

}

请注意,您的模拟代码只会在 play { }块中起作用。因此,我们需要用块来包装断言语句。

关于spring - 在grails.test.GrailsMock上设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11704481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com