Java 需要帮助发布两次唯一字段和预期错误

Java 需要帮助发布两次唯一字段和预期错误,java,spring,spring-boot,exception,duplicates,Java,Spring,Spring Boot,Exception,Duplicates,我正在编写一个测试,它将检查每当有人试图发布同一个唯一的客户端两次时,是否会抛出正确的异常和错误消息。 我需要你帮我弄清楚 我的代码: @Test public void testDuplicatingKeys() throws Exception{ CreateClient createClient = new CreateClient (); createClient.setBic(Bic.1111); createClient.setCif("cif");

我正在编写一个测试,它将检查每当有人试图发布同一个唯一的客户端两次时,是否会抛出正确的异常和错误消息。 我需要你帮我弄清楚

我的代码:

@Test
public void testDuplicatingKeys() throws Exception{

    CreateClient createClient = new CreateClient ();
    createClient.setBic(Bic.1111);
    createClient.setCif("cif");
    createClient.setLegalCode("legalCode");

    MvcResult mvcResult = mockMvc.perform(post("/clients")
            .content(objectMapper.writeValueAsString(createClient))
            .contentType(MediaType.APPLICATION_JSON))
            .andExpect(status().isCreated()).andReturn();

    MvcResult mvcResult1 = mockMvc.perform(post("/clients")
            .content(objectMapper.writeValueAsString(createClient))
            .contentType(MediaType.APPLICATION_JSON))
            .andExpect(status().isCreated()).andReturn();
}
因此,当它第一次执行post请求时,它应该使用此请求主体(
Bic.1111,“cif”,“legalCode”
)发布一个客户端,并获得一个
isCreated
状态。一切都好。但是第二次,它尝试发布具有相同请求主体的同一客户端时,应该会得到一个错误(目前它是http-500,带有
ConstraintViolationException
),但不知何故,它仍然会得到
isCreated
状态。我如何模拟在同一个客户机上发布两次,然后出现错误?谢谢

My
ClientController.java

@PostMapping(value = "/clients")
@ResponseStatus(HttpStatus.CREATED)
public Client createBgwClient(@RequestBody CreateClient createClient) {
    Client Client =
            new Client(
                    createClient.getBic(),
                    createClient.getCif(),
                    createClient.getLegalCode()
            );

    return clientRepository.save(client);
}

ConstraintViolationException是数据库异常,所以对这些变量有约束。例如primarkey、uniqueconstraint等。。 您可以检查响应消息是否类似于mockMVC的预期部分。 如果不处理错误消息,则情况就不同了。也许你可以查一下@ControllerAdvice。 如果您发送表实体,我们可以检查您是否使用hibernate创建。
如果可能,您可以发送表上的约束。

我怀疑您正在尝试编写单元测试用例。您可以从控制器服务库发布代码吗?@psi为什么需要它?我只需要找出一种方法,两次发布同一个请求主体,第二次出现错误。问题出在你的控制器上,而不是在这个单元测试中。这个测试实现了您所期望的,它发送了两次请求。如果它获取isCreated,那么您的控制器将正常工作wrongly@AlmasAbdrazak添加了控制器代码您的代码中的mockMvc是什么?它发送真正的http请求吗?