Spring MVC Controller

正在嘗試用junit5和mockito測試我的web層(springboot,springmvc)。http方法的所有其他測試(get、put等)工作正常,但更新。遵循代碼。

Controller:

@PutMapping(value = "{id}")
public ResponseEntity<?> putOne(@PathVariable Integer id, @Valid @RequestBody Customer customerToUpdate) {
    Customer updated = customerService.update(id, customerToUpdate);
    return ResponseEntity.ok(updated);
}    

Service:

public Customer update(Integer customerId, Customer customerToUpdate) {
    Customer customerFound = customerRepository.findById(customerId).orElseThrow(() -> {
        throw new CustomerControllerAdvice.MyNotFoundException(customerId.toString());
    });

    customerToUpdate.setId(customerFound.getId());

    return customerRepository.save(customerToUpdate);
}

最后,測試:

static final Customer oneCustomer = Customer.of(3,"john", LocalDate.of(1982, 11, 8));
    
@Test
void putOneTest() throws  Exception {
    when(customerService.update(oneCustomer.getId(), oneCustomer)).thenReturn(oneCustomer);

    mockMvc.perform(put(CUSTOMER_URL + oneCustomer.getId())
                    .contentType(MediaType.APPLICATION_JSON)
                    .content(objectMapper.writeValueAsString(oneCustomer)))
            .andDo(print())
            .andExpect(jsonPath("$.name").value(oneCustomer.getName()))
                .andExpect(jsonPath("$.birthDate").value(oneCustomer.getBirthDate().toString()))
                .andExpect(status().isOk());
}

Result:

java.lang.AssertionError: No value at JSON path "$.name"

CustomerService中的update(...)方法只返回null。我不明白怎么回事。請給出建議。

? 最佳回答:

問題在于這一行:

when(customerService.update(oneCustomer.getId(), oneCustomer)).thenReturn(oneCustomer);

你應該把它改成

when(customerService.update(eq(oneCustomer.getId()), any())).thenReturn(oneCustomer);

因為您的put請求主體是JSON,而不是真正的Customer,所以when...thenReturn語句沒有像您預期的那樣工作良好。被模擬的customerService默認返回空值。這就是為什么你得到了一個空洞的回答。因此,你必須糾正參數匹配器,使其正確。

主站蜘蛛池模板: 一区二区三区视频| 久久精品一区二区三区中文字幕| 伊人久久大香线蕉AV一区二区| 日本精品夜色视频一区二区| 香蕉久久一区二区不卡无毒影院| 亚洲av色香蕉一区二区三区 | 美女福利视频一区| 精品国产一区二区三区av片| 肥臀熟女一区二区三区| 精彩视频一区二区三区| 精品无码人妻一区二区三区18| 国产午夜精品一区二区三区| 亚洲av成人一区二区三区在线观看| 国内精自品线一区91| 亚洲Av永久无码精品一区二区| 日韩亚洲AV无码一区二区不卡 | 国99精品无码一区二区三区| 精品国产亚洲一区二区在线观看| 日本一区二区三区不卡在线视频| 色综合视频一区二区三区44| 亚洲国产av一区二区三区丶| 99精品国产高清一区二区| 免费日本一区二区| 无码国产精品一区二区免费模式| 亚洲一区二区三区在线观看精品中文| 久久一区二区免费播放| 精品国产一区二区三区在线观看| 国产美女视频一区| 亚洲一区无码中文字幕| 日韩精品无码一区二区中文字幕| 无码精品人妻一区二区三区漫画 | 成人精品一区二区激情| 亚洲精品精华液一区二区| 国产SUV精品一区二区四| 日美欧韩一区二去三区| 国产精品被窝福利一区| 久久精品国产一区二区三| 无码乱码av天堂一区二区| 国产精品日韩欧美一区二区三区| 濑亚美莉在线视频一区| 国产精品亚洲综合一区|