【问题标题】:Grails - integration tests for verifying REST callsGrails - 用于验证 REST 调用的集成测试
【发布时间】:2011-02-06 20:00:27
【问题描述】:

我们想为我们的 Grails 应用程序公开的许多 REST 服务添加一些集成测试,而不是使用我们当前使用的 Firefox Poster 插件手动验证它们。

顺便说一句,在我们的例子中它必须是一个集成测试,而不是一个单元测试。

我相信其他人之前已经经历过这个,并且可以节省我们一些时间而不是尝试......

`grails test-app -integration`

上述命令是否真的启动了向我们自己的应用程序 (http://localhost/myapp) 进行自我发布所需的功能?它必须通过 url 映射管道、xml 内容协商、spring/acegi 安全等。如果是这样,我想我们可以使用 Groovy RESTClient,如下所述: http://groovy.codehaus.org/modules/http-builder/doc/rest.html

Google 告诉我另一个选择是功能测试插件: http://thediscoblog.com/2009/06/15/grails-hip-tip-testing-restful-services/

有经验的人有什么问题或问题吗?这是一个使用 plugins.acegi=0.5.2 的 Grails 1.2.1 应用程序

【问题讨论】:

    标签: rest grails integration-testing


    【解决方案1】:

    你想要的是

     grails test-app integration:
    

    根据http://grails.org/doc/latest/ref/Command%20Line/test-app.html

    【讨论】:

    • 这是新的带有冒号的语法,旧的也可以
    【解决方案2】:

    REST 服务通常是通过控制器中的操作创建的,这些操作在 URLMappings 中设置以使用不同的 HTTP 方法(GET、PUT、POST、DELETE),因此由于它们是控制器中的简单操作,因此集成测试可以只是一种测试方法,可以像其他任何方法一样测试操作,向它们发送您需要的内容类型,例如 JSON,如果这是您的服务所期望的,则将正确的数据作为 JSON 传递。

    您可以为同一操作创建多个测试方法来测试不同的响应,例如,如果请求了无效资源而不是测试服务是否返回正确的错误代码 404。

    【讨论】:

    • 感谢您的回复,Maricel 但关键问题是:“上述命令是否真的启动了向我们自己的应用程序 (localhost/myapp) 进行自我发布所需的功能?它必须通过 url 映射管道、xml 内容协商、spring/acegi 安全等"
    • 我想我必须停止偷懒,自己找出答案。我怀疑test-app -integration 不会启动 tomcat 功能,但功能测试插件似乎会这样做
    • Sunny 我明白你在说什么,我们仍然使用集成测试来测试所有这些,但我们在测试代码中更多地手动进行。我想如果您需要对工作流程进行更多控制,那么功能测试更适合您的需求。
    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多