我正在使用grails 1.3.7。
在为我的控制器编写单元测试时,我收到错误,因为我在控制器中的操作使用动态查找器,例如“findByName('ABC')”。 我知道我也需要嘲笑动态查找器,我尝试了那个东西。但遗憾的是没有成功。 我请求你帮我解决我需要使用的确切模拟片段。 此外,对于所有这些嘲弄的事情,请建议一些具有所有这些的文档URL。
另外,在我的grails应用程序中,我将三个域之间的关联称为“hasMany和belongsTo”。因此,在为控制器编写单元测试时,请建议我如何模拟这些域类。
请尽快请求大家回答,因为我对这些疑惑感到困惑。 提前致谢, 并等待积极的答案。
谢谢
答案 0 :(得分:3)
如果name
是域的属性,那么动态查找器将在mock the domain时“自动”被模拟。你应该能够做到:
mockDomain(YourDomain)
此时您将返回null,因此如果您希望该查询返回它们,请创建一些实例:
YourDomain instance = new YourDomain(name: 'foo')
mockDomain(YourDomain, [instance])
然后你可以这样做:
assert instance == YourDomain.findByName('foo')
答案 1 :(得分:0)
要模拟域动态查找器,请尝试:
def someDomainMock = new GrailsMock(SomeDomain)
someDomainMock.demand.static.findByName(1..1) { String name ->
[new SomeDomain(name: name + '_1'), new SomeDomain(name: name + '_2')]
}
答案 2 :(得分:0)
有人使用Grails 4.0.0和Spock对此问题进行了更新吗?因为它似乎没有动态的查找器。