使用doWithSpring

时间:2018-03-08 12:21:06

标签: unit-testing grails spock grails-3.3

在Grails 3.2.x及更早版本中,我可以在spock单元测试中做这样的事情:

def myServiceMock = Mock(MyService) {
    someMethod() >> 42
}

Closure doWithSpring() {{ ->
    myService(InstanceFactoryBean, myServiceMock, MyService)
}}


def "some test"(){
    expect:
    service.myService.someMethod() == 42
}

这将使模拟能够在协作类中注入。

请参阅:http://docs.grails.org/3.2.4/guide/testing.html 在“doWithSpring和doWithConfig回调方法,FreshRuntime注释”部分下。

在Grails 3.3.2中它似乎不再起作用了。 并且从测试文档中删除了它的提及。

有没有办法再次完成这种行为?

非常感谢提前!

/布赖恩

1 个答案:

答案 0 :(得分:2)

Grails 3.3附带了新的测试框架。

您可以在这里找到文档 - https://testing.grails.org/latest/guide/index.html

对grails 3.3进行测试。你可以用这种方式修改你的代码:

def myServiceMock = Mock(MyService) {
    someMethod() >> 42
}

def setup() {
        defineBeans{
            myService(InstanceFactoryBean, myServiceMock, MyService)
        }
    }