0

I have a problem about writing a JUnit Service with Mockito in Spring Boot example.

I got null pointer exception for result as it has null.

How can I fix that issue?

Here are the code snippets shown below.

Here is the service class of Category

@Service
@RequiredArgsConstructor
public class CategoryService {

    private final CategoryRepository categoryRepository;


    public Category findCategory(Long id) {
        return categoryRepository.findById(id).orElseThrow();
    }

    public Category findByName(String value) {
        return categoryRepository.findByName(value).orElseThrow();
    }
}

Here is the JUnit Service class shown below

@ExtendWith(MockitoExtension.class)
public class CategoryServiceTest{

    @Mock
    private CategoryService categoryService;

    @Mock
    private CategoryRepository categoryRepository;

    @Test
    void givenCategory_whenLoadCategory_thenReturnCategory() {

        // given - precondition or setup
        Category category = Category.builder().name("Category 1").build();

        // when -  action or the behaviour that we are going test
        when(categoryRepository.findById(anyLong())).thenReturn(Optional.of(category));

        Category result = categoryService.findCategory(anyLong());  // return null

        // then - verify the output
        assertEquals(category.getName(), result.getName());

    }

    @Test
    void givenCategory_whenFindByName_thenReturnCategory() {

        Category category = Category.builder().name("Category 1").build();

        // when -  action or the behaviour that we are going test
        when(categoryRepository.findByName("Category 1")).thenReturn(Optional.of(category));

        Category result  = categoryService.findByName("Category 1"); // return null

        // then - verify the output
        assertEquals(category.getName(), result.getName());
    }
}

1 Answer 1

1

You're mocking the class under test, it should be

@ExtendWith(MockitoExtension.class)
public class CategoryServiceTest{

    @InjectMocks
    private CategoryService categoryService;
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.