如何在"渲染"内部声明值单元测试用例(grails,junit)

时间:2014-12-12 11:25:24

标签: unit-testing grails junit

我试图在#34; render"内部声明值。在用Grails编写的单元测试用例中。但它似乎不合适

   render(view:"create",model[:])
我试过的是什么        的assertEquals("创建",renderArgs("视图&#34))

我还尝试了一些替代方案,如controller.response.renderedUrl等。但这些都没有。 有人可以提出想法吗?

提前致谢, BK

2 个答案:

答案 0 :(得分:1)

要测试视图,您只需使用隐式view变量,但它会指向视图/模板的路径,例如/controller/create。所以你可以写assertEquals(view, '/controller/create')。还有一个隐式model变量,您可以为此进行类似的操作。

请参阅docs测试视图渲染部分)。

答案 1 :(得分:0)

以下测试有效:

的grails-app /控制器/演示/ DemoController.groovy:

package demo

class DemoController {

    def index() {
        render view: 'first'
    }
}

测试/单元/演示/ DemoControllerSpec.groovy:

package demo

import grails.test.mixin.TestFor
import spock.lang.Specification

@TestFor(DemoController)
class DemoControllerSpec extends Specification {

    void "test render view"() {
        when:
        controller.index()

        then:
        '/demo/first' == view
    }
}

测试/单元/演示/ DemoControllerTests.groovy:

package demo

import grails.test.mixin.TestFor

@TestFor(DemoController)
class DemoControllerTests {

    void testRenderView() {
        controller.index()
        assert '/demo/first' == view
    }
}

我希望有所帮助。