Grails:我如何模拟测试中可能在测试期间内部调用的类的其他方法
发布时间:2020-12-14 16:37:41 所属栏目:大数据 来源:网络整理
导读:我正在一个类似于下面给出的服务类中对methodA()进行测试。 Class SampleService { def methodA(){ methodB() } def methodB(){ }} 当我测试methodA()时,我需要能够在测试methodA()时模拟对methodB()的调用。我使用2.0.x版的grails。在1.3.x发行版中,我会
我正在一个类似于下面给出的服务类中对methodA()进行测试。
Class SampleService { def methodA(){ methodB() } def methodB(){ } } 当我测试methodA()时,我需要能够在测试methodA()时模拟对methodB()的调用。我使用2.0.x版的grails。在1.3.x发行版中,我会写一个这样的自我模仿 def sampleServiceMock = mockFor(SampleService) sampleServiceMock.demand.methodB { -> } 但是这在2.0.x版本中不起作用。我想知道在测试methodA()时,嘲笑methodB()的其他方法是什么? 解决方法
对于这种问题,我实际上避免了嘲笑,并使用内置的groovyProxy能力将一个闭包映射作为代理对象。这给你一个实例,一些方法被覆盖,但其他方法传递给真正的类:
class SampleService { def methodA() { methodB() } def methodB() { return "real method" } } def mock = [methodB: {-> return "mock!" }] as SampleService assert "mock!" == mock.methodA() assert "real method" == new SampleService().methodA() 我喜欢只改变一个实例,可以在一行中完成,并且不会弄乱那个实例之外的任何需要被清理的元类。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |