Mockito – How to mock repository findById thenReturn() Optional?

Try to mock a repository findById method, but no idea use thenReturn() to return an object, as it accepts an Optional?

P.S Tested in Spring Boot 2 environment


import static org.mockito.Mockito.*;
import org.springframework.boot.test.mock.mockito.MockBean;

	@MockBean
	private BookRepository mockRepository;
	
	@Before
    public void init() {
       
        Book book = new Book(1L, "A Book");
		
		//error, can't resolve method thenReturn(book)?
		when(mockRepository.findById(1L)).thenReturn(book); 

    }

Solution

Try Optional.of()


	@MockBean
	private BookRepository mockRepository;
	
	 @Before
    public void init() {
       
        Book book = new Book(1L, "A Book");
		when(mockRepository.findById(1L)).thenReturn(Optional.of(book));

    }

References

author image

mkyong

Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities. Read all published posts by

Comments

avatar
3000
newest oldest most voted
Mithun
Guest
Mithun

After passing it as Optional.of(T), when they are checking for T.isPresent() returns false. how to fix that?

Debargha Roy
Guest
Debargha Roy

Thanks a lot! Been looking for such a solution for a long time.

balan
Guest
balan

i want to write mockito which returns list. How to pass list object in Optional.of (). Could you help me on this.

sagar
Guest
sagar

Nice One

Neha
Guest
Neha

Could you please guide us how to configure MongoDB embedded DB with the mickito and write controller based test classes?