junit 乐观锁定@版本在单元测试中不起作用

b4wnujal  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(158)

在我的应用程序中,Java - Sping Boot - Hibernate - Liquibase在正常运行时,检查版本是否正常工作,在使用错误的版本参数更新时,我得到了预期的错误。但在Junit测试中,无论版本参数如何,更新都通过了。
是否应在Liquibase中向创建表中添加一些内容?

@Version
private int version;

==================

@Test
void shouldNotUpdateDoctor_wrongVersion() throws Exception {
    UpdateDoctorCommand updateDoctorCommand
            = new UpdateDoctorCommand("test4update",LocalDate.of(1980, 5, 12),
            LocalDate.of(2020, 11, 10), 16000, true, 2,3);
    String requestJson = objectMapper.writeValueAsString(updateDoctorCommand);

    postman.perform(MockMvcRequestBuilders.put("/api/v1/clinic/doctors/33")
                    .contentType(MediaType.APPLICATION_JSON)
                    .content(requestJson))
            .andExpect(status().isBadRequest())
            .andExpect(jsonPath("$").value("ROW_UPDATED_IN_ANOTHER_TRANSACTION"));

    postman.perform(MockMvcRequestBuilders.get("/api/v1/clinic/doctors/33"))
            .andExpect(status().isOk())
            .andExpect(jsonPath("$.name").value("notUpdated"))
            .andExpect(jsonPath("$.version").value("5"));
}

=====

java.lang.AssertionError: Status expected:<400> but was:<200>
Expected :400
Actual   :200
r8uurelv

r8uurelv1#

正在添加测试应用程序:属性:

spring.jpa.open-in-view=false

解决问题

相关问题