在测试控制器时收到以下错误消息 – 请参阅下面的代码.
我怎么能纠正这个?
当我从控制器(run-app)调用服务方法时,它工作正常.
我怎么能纠正这个?
当我从控制器(run-app)调用服务方法时,它工作正常.
例外:
groovy.lang.MissingMethodException: No signature of method:
grails.test.GrailsMock.isOk() is applicable for argument types:
(java.lang.String) values: [H] at …VControllerSpec.test
something(VControllerSpec.groovy:)
class:VControllerSpec
import grails.test.mixin.TestFor import spock.lang.Specification @TestFor(VController) @Mock(VService) class VControllerSpec extends Specification { void "test something"() { given: def vServiceMock = mockFor(VService) vServiceMock.demand.isOk { String yeah -> return true } controller.vService = vServiceMock.createMock() when: def isO = vServiceMock.isOk("H") then: isO == true } }
等级:VService
import grails.transaction.Transactional @Transactional class VService { def isOk = { String yeah -> def isO = false return isO } }
谢谢,
史蒂夫
解决方法
假设VController中有一个动作:
def myAction() { vService.isOk('Hello') }
以下测试应该通过
void 'test service'() { given: def vServiceMock = mockFor(FormatService) vServiceMock.demand.isOk { String yeah -> return true } controller.vService = vServiceMock.createMock() when: def isO = controller.myAction() then: isO == true }