unit-testing - 单元测试在 Grails 中使用 JsonBuilder 呈现 Json

标签 unit-testing grails render jsonbuilder

假设我的 Controller 中有一个简单的 Action ,其结尾是:

render(contentType: "text/json") {
    message = 'some text'
    foo = 'bar'
}

它按照 JSON 构建器 documentation 正确呈现.但是,当我尝试在 ControllerUnitTest 中对该响应进行单元测试时,我得到一个带有 controller.response.contentAsString 的空白字符串。 .我什至试过 controller.renderArgs ,但它只包含 contentType: "text/json" .

当我将 JSON 转换为 map 并对其进行编码时 as JSON ,然后我就可以正常测试了。但是有没有办法对代码进行单元测试?

最佳答案

您必须在测试中调用操作并使用 controller.response.contentAsString 比较结果

所以你的测试方法看起来像

void testSomeRender() {
controller.someRender()
assertEquals "jsonString", controller.response.contentAsString

}

关于unit-testing - 单元测试在 Grails 中使用 JsonBuilder 呈现 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9841296/

相关文章:

java - 在 Junit4 (PowerMock) 中实现 Mocking 时的依赖关系

jsp - 如何在Grails应用程序中导入ckeditor/jsp taglibs

grails - 如何在 Grails Geb/Spock 测试用例中获取 sessionFactory?

internet-explorer-8 - 如何在不单击按钮的情况下强制 IE8 进入兼容模式

java - 编写自定义 HtmlResponseWriter JSF

java - 在 Rajawali 中渲染线框对象

python:测试子进程调用是否抛出预期异常

.net - 由于动态组装,Assembly.GetManifestResourceNames() 异常

unit-testing - 如何使用 dotnet test 运行来自多个库的测试,并带有单个通过/失败摘要

Grails Spring Security Oauth Provider 插件 : Full authentication is required to access this resource