我有更一般的问题。使用 Spock 时,我应该使用哪个框架或实现在 Grails 2.x 中进行模拟?
我知道大量的模拟风格:利用 Groovy 元类、Grails mockFor()、Groovy Mock()、Groovy 闭包风格等。它们各有优缺点。但我不明白的是,某些模拟风格在我无法确定的某些情况下有效(即 mockFor() 适用于某些实现而不适用于其他实现)。
目前我有两个类似的服务方法模拟实现。
这个有效:
@TestFor(MyController)
@Mock([MyDevice])
class MyControllerSpec extends ControllerSpec {
void "test st."() {
def myService = mockFor(MyService)
myService.demand.myMethod() { def st ->
return "test"
}
controller.myService = myService.createMock()
}
}
但是,此实现不起作用:
@TestFor(MyController)
@Mock([MyDevice])
class MyControllerSpec extends ControllerSpec {
void "test st."() {
def yourService = mockFor(YourService)
yourService.demand.yourMethod() { def st ->
return "test"
}
controller.yourService = yourService.createMock()
}
}
服务实现和从控制器调用非常相似。那么在 Grails 中模拟的最佳实践是什么?或者是否有任何 Grails 的良好模拟框架可以节省我弄清楚如何模拟的时间?
感谢您的任何建议!:-)
马特奥