[英]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.