我正在使用grails plugin multi-tenant-single-db。在这种情况下,我需要写一个spock测试,我们暂时删除租户限制。位置是我的租户,所以我的方法看起来像这样:
disabled
该方法按预期运行,但尝试将方法置于测试覆盖范围内,错误输出表明:
<button>
和源自那里的堆栈跟踪。
我需要存根吗? withoutTenantRestriction是我整个方法逻辑的包装。
更新: 测试代码如下所示:
def loadOjectDetails(){
Location.withoutTenantRestriction{
// code here to retrieve specific items to the object to be loaded
render( template: "_loadDetails", model:[ ... ]
}
}
答案 0 :(得分:0)
是的!你应该在运行时而不是编译时创建它。 您可以将其存储如下:
Your_Domain.metaClass.withoutTenantRestriction{Closure closure ->
closure.call()
}
这样您的常规代码就可以在测试用例中使用。另外,就像在withoutTenantRestriction
中一样,它基本上会启动一个新的hibernate会话,这并不重要,因为现在你已经关闭了闭包,你可以执行所需的操作来代替仅调用closure.call()
。
此外,同样适用于withThisTenant
。
在集成测试中,您不需要像加载整个环境那样将其存根。
希望它有所帮助!!