簡體   English   中英

如何在單元測試用例(grails,junit)中斷言“render”中的值

[英]how to assert values inside “render” in unit test case (grails ,junit)

我試圖在我用 Grails 編寫的單元測試用例中斷言“render”中的值。 但是好像不太合適

   render(view:"create",model[:])

我試過的是 assertEquals("create",renderArgs("view"))

我還嘗試了一些替代方案,如 controller.response.renderedUrl 等。但這些都沒有奏效。 有人可以提供一個想法嗎?

提前致謝,BK

要測試視圖,您可以簡單地使用隱式view變量,但它會指向您的視圖/模板的路徑,例如/controller/create 所以你可以寫assertEquals(view, '/controller/create') 還有一個隱式model變量,您可以對其進行類似的處理。

請參閱文檔測試視圖渲染部分)。

以下測試有效:

grails-app/controllers/demo/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
    }
}

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM