无法实现Grails-jaxrs多部分文件上传集成测试

时间:2014-05-24 09:04:19

标签: grails file-upload jax-rs integration-testing

我正在使用grails-jaxrs来公开接受multipart / form-data的api ..

    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(['application/json'])
    @Path('/addMessage')
    ChatMessage addChatMessageWithAttachment(@Context HttpServletRequest req) {
        log.debug "> addChatMessageWithAttachment"
        def fileStores = []
        def chatMessage
        GrailsWebRequest request = WebUtils.retrieveGrailsWebRequest()
        def params = request.getParams()
        if (!(params.messageBody.length() > 0)) {
            log.error("Empty message body")
            throw new LocalisedException(ErrorCode.CHAT_MESSAGE_CREATE_FAILED)
        }
      }

实施正常按预期运作。我能够发送表单数据(成功地使用文件和其他参数。

现在我正在尝试为上述逻辑实现集成测试。

我正在使用IntegrationTestCase来实现这一点..所以我的代码片段如下:

class ChatMessageResourceV1Tests extends IntegrationTestCase{
    //other implementation and setup ommited    

    @Test
    void "Create new chat message for event id - customer user"() {
        def headers = ['Content-Type': 'multipart/form-data', 'Accept': 'application/json']

        def data = "My message..."
        def cm = new ChatMessage(messageBody: data)

        def content = "{'eventId':'$event.id','messageBody':'My message...'}"
        sendRequest("/api/v1/chatMessage/addMessage", 'POST', headers, content.bytes)

        assertEquals(200, response.status)
        }    

}

当我运行测试时..我可以看到调用到达API方法内部..但是,参数messageBody将变为null并且抛出异常。

我已经尝试了所有可能的测试组合..但没有运气。

任何帮助都将不胜感激。

0 个答案:

没有答案