单元测试 – 在单元测试Controller – MissingMethodException时
发布时间:2020-12-14 16:22:19 所属栏目:大数据 来源:网络整理
导读:在测试控制器时收到以下错误消息 – 请参阅下面的代码. 我怎么能纠正这个? 当我从控制器(run-app)调用服务方法时,它工作正常. 例外: groovy.lang.MissingMethodException: No signature of method: grails.test.GrailsMock.isOk() is applicable for argum
在测试控制器时收到以下错误消息 – 请参阅下面的代码.
我怎么能纠正这个? 当我从控制器(run-app)调用服务方法时,它工作正常. 例外:
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 } 这里有一些优化的事情包括使用方法isOk而不是闭包作为最佳实践. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |