【问题标题】:Test RESTful JSON Grails Webservice测试 RESTful JSON Grails Web 服务
【发布时间】:2023-03-30 20:30:02
【问题描述】:

我想通过以下方式测试我的安全网络服务:

  • UrlMapping 正确,以下服务是否可用?
  • 测试 GET/POST/PUT/DELETE 及其呈现的反馈以及错误
  • 登录和未登录时的测试错误消息

有人可以给我一些提示吗?我不知道如何访问 grails 安全服务以及在登录和未登录时如何针对我的控制器运行测试。我还需要一些 Mock Server 或其他东西来针对我的控制器进行测试,或者?

对不起,我对这个话题很陌生,但我想在失去对我的网络服务的控制之前朝着正确的方向前进。

感谢您的帮助!

【问题讨论】:

    标签: rest grails integration-testing


    【解决方案1】:

    我们使用REST Client 插件和functional testing 插件来测试我们所有的网络服务。

    例如...

    void testCreateTag() {
        def name = 'Test Name'
        def jsonText = """
             {
               "class":"Tag",
               "name":"${name}"
             }
          """
    
        post('/api/tag') {
          headers['x-user-external-id'] = securityUser.externalId
          headers['x-user-api-key'] = securityUser.apiKey
          headers['Content-type'] = 'application/json'
          body {
            jsonText
          }
        }
    
        def model = this.response.contentAsString
        def map = JSON.parse(model)
    
        assertNotNull(map.attributes.id)
    
        Tag.withNewSession {
          def tag = Tag.get(map.attributes.id)
    
          assertNotNull(tag)
          assertEquals(name, tag.name)
        }
    }
    

    【讨论】:

      【解决方案2】:

      我有类似的代码,它使用内置(groovy 1.8)JsonSlurper,我认为它可能更可靠,只需要功能测试插件而不需要 REST 客户端插件。

          String baseUrlString = 'http://localhost:8080/**YOURAPP**'
      
          baseURL = baseUrlString
      
          post('/j_spring_security_check?')
      
          assertStatus 200
          assertContentDoesNotContain('Access Denied')
      
          get("/*your test URL*/")
      
          def jsonObj = new JsonSlurper().parseText(this.response.contentAsString)
          assertEquals(jsonObj.your.object.model, **yourContent**)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 1970-01-01
        • 1970-01-01
        • 2018-11-18
        • 2016-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多