我试图在#34; render"内部声明值。在用Grails编写的单元测试用例中。但它似乎不合适
render(view:"create",model[:])
我试过的是什么
的assertEquals("创建",renderArgs("视图&#34))
我还尝试了一些替代方案,如controller.response.renderedUrl等。但这些都没有。 有人可以提出想法吗?
提前致谢, BK
答案 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
}
}
我希望有所帮助。