簡體   English   中英

如何在不使用RequestBody或RequestParam的情況下使用MockMVC使用formData測試方法

[英]How test method with formData, without RequestBody or RequestParam with MockMVC

我在我的rest控制器中有此方法(出於幾個復雜的原因,我無法使用@RequestBody或@RequestParam,所以我需要這種方式):

@PostMapping(value="/crear")
public Resultado<Candidato> crear(Candidato candidato) throws IOException {
    ...Just code...
    return resultado;
}

並且我正在嘗試使用MockMVC對其進行測試,但是我的“ Candidato”在每個屬性中始終為Null,這是到目前為止的測試:

 @Test
public void crear() throws Exception {

    String nombre = "Candidato Test2";
    candidato.setNombre(nombre);
    gsonBuilder.setDateFormat(EntitiesBuilderTestUtil.DATE_FORMAT);

    when(procesoSeleccionService.findByToken(anyString())).thenReturn(EntitiesBuilderTestUtil.obtenerProcesoSeleccion());
    when(candidatoValidator.validate(any(Candidato.class))).thenReturn(new Notificacion());

    this.mockMvc.perform(post("/api/candidato/crear")
            .content(gsonBuilder.create().toJson(candidato).getBytes())
            .contentType(MediaType.APPLICATION_FORM_URLENCODED))
            .andExpect(status().isOk())
            .andExpect(content().contentType(IntegrationTestUtil.APPLICATION_JSON_UTF8));
}

在我的ajax請求中,我執行下一個:

crearCandidato: function(){             
            let formulario = app.funciones.obtenerFormulario();
            $.ajax({
                url:baseURL+"/api/candidato/crear",
                type:"POST",
                contentType: false,
                processData: false,
                data:formulario,
                dataType:"JSON"
            }).done(function(data){
                ... do something
            }).fail(function(e){
                ... do something
            });
        }

我的obtenerFormulario()函數:

 obtenerFormulario: function(){
            let formdata = new FormData();
            formdata.append("nombre",app.funciones.removerTagsHtml(app.$inpNombre.val()));
            ...more code
            return formdata;
        },

如何正確測試該方法? 謝謝您的幫助:D

->更新我已經有其他測試正常運行,並且對於“ Candidato”,它已正確創建,但傑克遜使用空屬性創建了它

您可以使用POSTman( https://www.getpostman.com/ )或SOAPUI( https://www.soapui.org/ )測試REST服務。

但是,我懷疑問題出在您的javascript函數上,您可以通過使用chrome開發人員工具的調試功能進行驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM