我将应用程序从Grails 2.4.4升级到Grails 3.0.9,但我无法找到有关如何在Grails 3中执行mockFor,createMock和require的任何信息。
我曾经做过这样的事情:
fooService = mockFor(FooService)
controller.fooService = fooService.createMock()
fooService.demand.barMethod() { a,b ->
}
但看起来像'mockFor'简直就是从文档中消失了。 Grails 3的方法是什么?
更新:
我不想重写使用Grails' mockFor'编写的数千个测试。风格与Spock的交互风格,所以我提出了这个解决方案:
没有进一步的改变,这"只是工作"在Grails 3中。
答案 0 :(得分:8)
默认情况下,您可以使用Spock:
@TestFor(MyController)
class MyControllerSpec extends Specification {
void "test if mocking works"() {
given:
def fooService = Mock(FooService)
fooService.barMethod(_, _) >> {a, b ->
return a - b
}
when:
def result = fooService.barMethod(5, 4)
then:
result == 1
}
}
class FooService {
int barMethod(int a, int b) {
return a + b;
}
}
答案 1 :(得分:5)
我还在使用mockFor
的grails 2升级了大量测试,并使用了HypeMK概述的类似方法:
import groovy.mock.interceptor.MockFor
mockFor
重命名为new MockFor
createMock()
重命名为proxyInstance()
verify()