在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
}

这将使模拟能够注入(inject)到协作类中。

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

在Grails 3.3.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)
        }
    }

关于unit-testing - 使用doWithSpring注入(inject)模拟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49172980/

10-11 02:29