Grails 单元测试问题

Posted

技术标签:

【中文标题】Grails 单元测试问题【英文标题】:Grails Unit Testing Issues 【发布时间】:2016-08-23 05:28:32 【问题描述】:

我在测试我的 grails 控制器时遇到问题,因为它依赖于一项似乎没有被注入的服务。我尝试了几种方法(例如扩展类,如 grailsunitestcase、规范),但我不断收到错误。问题是该服务变量为空,由于异常,我无法测试我的控制器索引方法(调用渲染视图)...... 我真的需要知道如何做到这一点,但我不知道从哪里开始......

【问题讨论】:

【参考方案1】:

单元测试就是这样。控制器周围没有 grails '环境'。如果控制器使用通常注入的服务,则您必须自己模拟该服务。

@TestFor(SomeController)
@Mock([SomeService])
class SomeControllerSpec extends Specification
    def "test some method"() 
        given:
            def mockService = mockFor(SomeService)
            mockService.demand.someServiceMethod()  ->
                return something
            

            controller.someService = mockService.createMock()
        when:
            controller.someControllerMethod()
        then:
           // whatever checks are appropriate
    

【讨论】:

嗨 railsdog...谢谢您的回答!我不知道发生了什么,但是当我提交项目时,被测试的控制器的服务被注入并且一切正常......但是突然间所有测试的方法都工作正常,但是减去一个......我看不到具体的事情发生但很好。 . 我知道没有应用程序服务器在运行,因此没有容器注入依赖项......我很沮丧,因为这可能意味着我进入了一家公司......再次感谢您的时间

以上是关于Grails 单元测试问题的主要内容,如果未能解决你的问题,请参考以下文章

Grails 2.3 使用 IVY 解析器进行单元测试

单元测试 Grails 控制器链接

使用 Grails 对域类进行单元测试

在 Grails 单元测试中注入服务

Grails如何对异常执行单元测试

简单 grails 控制器单元测试中的空指针