繁体   English   中英

如何在Grails单元测试类中动态模拟域?

How to dynamically mock domains in Grails unit test classes?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

在Grails 3.x中编写单元测试时,我们必须模拟域。 这是示例代码。

package com.example.service
import grails.test.mixin.Mock
import grails.test.mixin.TestFor
import spock.lang.Ignore
import spock.lang.Specification

@TestFor(SomeService)
@Mock([DomainA, DomainB])
class SomeServiceSpec extends Specification{
   ...
}

问题是添加新域时,假设DomainC且单元测试依赖于DomainC,则这些单元测试将失败。 然后,我们必须手动添加DomainC。

有没有一种方法可以动态模拟域?

@TestFor(SomeService)
@Mock([dynamically mock all domain objects here])
class SomeServiceSpec extends Specification{
   ...
}
1 个回复

也许这就是您需要的(来自grails doc )。

或者,您也可以直接将DomainClassUnitTestMixin与TestMixin批注一起使用,然后在测试过程中调用mockDomain方法来模拟域:

@TestFor(BookController)
@TestMixin(DomainClassUnitTestMixin)
class BookControllerSpec extends Specification {

    void setupSpec() {
         mockDomain(Book)
    }
...

域列表也存在mockDomains域方法,您可以通过标准方式从上下文中检索域。

2 如何在Grails单元测试中模拟ajax请求

我有一个控制器动作,它处理ajax和非ajax请求。 但是,如果它是一个ajax请求,它会做一些额外的事情。 if(request.xhr){仅用于ajax请求的东西} 但是,当我试图对此进行单元测试时。 无论我做了什么,我都无法创建/模拟ajax请求。 即,reques ...

5 模拟Grails单元测试的方法

在我的一项单元测试中,我很难执行模拟方法。 我有以下测试代码: 在控制器类的详细信息中,我通过ICFService的getAllIC()创建了一个Person。 这部分正常工作。 但是,在函数的后面,有一个对icfList的调用(在控制器中定义)。 通过println,我确定该调 ...

8 如何在Grails单元测试中模拟java类?

我有一个java类,我已将其添加到我的resources.groovy中,如下所示: 然后我在GrailsS​​ervice中使用这个类: 显然,我想编写一个单元测试来模拟reasoningXMLLoader并将其注入服务中。 我尝试使用@Mock,MockFor和mockFo ...

9 如何在单元测试中模拟Grails的动态控制器方法

在我的Grails应用程序中,我使用了一个自定义链接生成器,该生成器将当前租户的名称动态添加为所有链接的参数。 在单元测试中,我现在在调用redirect()时在单元测试中得到了org.codehaus.groovy.grails.web.mapping.exceptions.UrlMappi ...

10 如何在Grails服务类单元测试中模拟静态Map属性

我在服务类中有一张静态地图,正在对填充地图的方法进行单元测试。 我想知道如何模拟服务类中使用的地图。 单元测试用例 当我运行测试用例时,它调用的是真实地图,而不是使用模拟的"put" api,该API返回null而不是“ testing”,我尝试了几种方法对其进行模拟,但仍然没 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM