2013-03-20 94 views
0

我正在使用grails 1.3.7。在grails单元测试中嘲弄动态查找器

在为我的控制器编写单元测试时,由于我在控制器中的动作使用动态查找器,例如“findByName('ABC')”,所以出现错误。 我知道我也需要嘲笑动态发现者,我尝试了这件事。但不幸的是没有解决。 我请求你请帮我拿出我需要使用的确切模拟片段。 此外,对于所有这些嘲笑的事情,请建议一些文档版本URL,它们将包含所有这些。另外,在我的Grails应用程序中,我有三个域之间的关联关系为“hasMany和belongsTo”。因此,在为控制器编写单元测试时,请建议我需要如何模拟这些域类。

请大家尽快解答我的疑问。 在此先感谢, 并等待积极的答案。

感谢

回答

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

如果name是域的属性,则动态查找器将“自动”被嘲笑,当你mock the domain。您应该简单地能够做到:

mockDomain(YourDomain) 

在这一点上,你就只能空回来,所以如果你想该查询返回他们创造一些实例:

YourDomain instance = new YourDomain(name: 'foo') 
mockDomain(YourDomain, [instance]) 

,那么你可以这样做:

assert instance == YourDomain.findByName('foo')