ich ein Unternehmen haben zu aktualisieren und einen JUnit, möchte ich, dass Update-Methode funktioniert prima testen, aber wenn ich Speichermethode von CrudRepository aufrufen bekomme ich einen neuen Eintrag in meinem Tisch statt der aktualisierte Entität, wie ein Unternehmen mit Federdaten JPA
Das ist meine Einheit:
@Entity(name = "PERSON")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "PERSON_ID")
private Integer id;
@Column(name = "FIRST_NAME")
private String firstName;
@Column(name = "LAST_NAME")
private String lastName;
//getters and setters
}
Das ist meine Dienstklasse ist:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { JPAConfigurationTest.class })
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
@Transactional
public class UpdatePersonServiceIntegrationTest {
@Autowired
PersonService personService;
@Before
public void setUp() throws Exception {
Person person = new Person(1);
person.setFirstName("Nicolas");
person.setLastName("Spessot");
personService.createPerson(person); //This invokes save
}
@Test
public void updatingPerson() throws Exception{
Person person = new Person(1);
person.setFirstName("Juan");
person.setLastName("Riquelme");
personService.updatePerson(person);
Person retrieved = personService.retrievePerson(1); //This invokes findOne
assertEquals(1, person.getId());
assertEquals("Juan", person.getFirstName());
assertEquals("Riquelme", person.getLastName());
}
}
:
@Service
public class PersonServiceImpl implements PersonService {
@Autowired
private PersonRepository personRepository;
@Override
public Person updatePerson(Person oldPerson) throws Exception {
return personRepository.save(oldPerson);
}
}
Das ist mein Repository
istpublic interface PersonRepository extends CrudRepository<Person, String> {
}
Das ist mein Test Ich gehe davon aus sein sollte
Vielen Dank im Voraus
Stellen Sie sicher, welche Werte eingestellt sind. Sie können dies überprüfen, indem Sie diese Werte vor dem Aufruf von save() protokollieren. –
Sie haben vergessen, 'equals() 'und' hashcode() 'in Person zu implementieren. Berücksichtigen Sie bei der Implementierung nur das Feld 'id'. Das sollte dein Problem lösen. –