我正在使用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并且抛出异常。
我已经尝试了所有可能的测试组合..但没有运气。
任何帮助都将不胜感激。