Проблема с ручным настройкой идентификатора в тестировании интеграции Spring Boot с WebTestClientJAVA

Программисты JAVA общаются здесь
Anonymous
Проблема с ручным настройкой идентификатора в тестировании интеграции Spring Boot с WebTestClient

Сообщение Anonymous »

Проблема с ручным настройкой идентификатора в тестировании интеграции Spring Boot с WebTestClient
Я пишу интеграционный тест для моего контроллера Spring Boot с использованием WebTestClient. Однако, когда я вручную устанавливаю идентификатор организации -сотрудника, прежде чем сохранить его в своем тесте, тест не проходит. Если я удалю назначение ручного идентификатора, тест проходит.

Код: Выделить всё

@Getter
@Setter
@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(unique = true)
private String email;

private String name;
private Long salary;
}
Ontity

Код: Выделить всё

@AutoConfigureWebTestClient(timeout = "100000")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@Import(TestContainerConfiguration.class)
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
class EmployeeControllerTestIT {

@Autowired
WebTestClient webTestClient;

@Autowired
private EmployeeRepository employeeRepository;

private Employee testEmployee;
private EmployeeDto testEmployeeDto;

@BeforeEach
void setUp() {
employeeRepository.deleteAll();

Long id = 1L;
testEmployee = Employee.builder()
.id(id) // Manually setting the ID
.email("anuj@gmail.com")
.name("Anuj")
.salary(200L)
.build();

testEmployeeDto = EmployeeDto.builder()
.id(id)
.email("anuj@gmail.com")
.name("Anuj")
.salary(200L)
.build();
}

@Test
void testGetEmployeeById_success() {
Employee savedEmployee = employeeRepository.save(testEmployee); // Fails here with error - org.springframework.orm.ObjectOptimisticLockingFailureException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.springboot.testing.entities.Employee#1]

webTestClient.get()
.uri("/employees/{id}", savedEmployee.getId())
.exchange()
.expectStatus().isOk()
.expectBody()
.jsonPath("$.id").isEqualTo(savedEmployee.getId())
.jsonPath("$.email").isEqualTo(savedEmployee.getEmail());
}
}
проблема
Если я вручную устанавливаю идентификатор, helpecteRepository.save (testmployee) сбой. br /> Если я удалю назначение ручного идентификатора, тест проходит. br /> Вопрос < /strong> < /p>
Почему вручную настройку идентификатора Save () для провал в моем тесте, даже если он работает в курсе, я следующий? Как я могу отладить или решить эту проблему? p>
@generatedValue (стратегия = GenerationType.identity) используется для генерации идентификатора. < /p>
Я использую TestContainers для тестирования интеграции. < /p>
Что может вызвать эту проблему, и какой может быть лучший подход для ее исправления?


Подробнее здесь: https://stackoverflow.com/questions/794 ... btestclien

Вернуться в «JAVA»