luchob / softuni-spring-may-2024

Our common projects
16 stars 1 forks source link

Unit testing issue #77

Closed ttheconjuring closed 1 month ago

ttheconjuring commented 1 month ago

Връзка към проекта: https://github.com/ttheconjuring

Кратко описание: Здравейте, Започнах да пиша unit тестове за един service, но не ми се получи много. Тествам метод register() в UserService в най-добрия случай.

  1. Какво очаквам да се случи? Очаквам User newUser = this.modelMapper.map(userSignUpData, User.class) да НЕ е null, защото в теста пише when(modelMapper.map(userSignUpData, User.class)).thenReturn(user);
  2. Какво всъщност се случва? java.lang.NullPointerException: Cannot invoke "com.testingez.testingez.models.entities.User.setPassword(String)" because "newUser" is null
  3. Какво опитахте? Написах си:
    • asserThat(modelMapper.map(userSignUpData, User.class)).isEqualTo(user)
    • asserThat(modelMapper.map(userSignUpData, User.class)).isNotNull(); и двете са true.

Стъпки за репродуциране: Стартиране на тест registerMethodShouldReturnSuccess() от UserServiceImplTest клас.

luchob commented 1 month ago

🎉Благодаря, че сте тук и се интересувате от Spring Framework!🎉

🌴 За съжаление обаче, аз не съм тук (това е автоматичен отговор) и ще бъда много ограничено достъпен чак до 10-ти август.
🥲Така че, не обещавам да ви отговоря или да ви пиша.
🥹Извинете ме!

:rocket: Успешно и приятно програмиране! :rocket:

ShenolShengov commented 1 month ago

Махни @ExtendWith(SpringExtension.class) и ще мине. Явно като сложеш два пъти @ExtendWith става проблем. А й, защо ти е нужна тази анотация при положение, че пишеш unit test и sping няма (Не се вдига ApplicationContext).

luchob commented 1 month ago

Здравей!

Съгласен съм с "community"-то :-) В един unit test (тест в изолация без ApplicationContext) е необходим единствено екстеншъна за Mockito:

@ExtendWith(MockitoExtension.class)
class UserServiceImplTest

Поздрави, Л.

luchob commented 1 month ago

Здравей!

Съгласен съм с "community"-то :-) В един unit test (тест в изолация без ApplicationContext) е необходим единствено екстеншъна за Mockito:

@ExtendWith(MockitoExtension.class)
class UserServiceImplTest

Поздрави, Л.

ttheconjuring commented 1 month ago

Благодаря за бързите отговори ! Не знам защо използвам @ExtendWith(SpringExtension.class). Бързам, че не остана време за тестове и чета Baeldung през редовете. :Д