<dependency>
<groupId>org.mockachino</groupId>
<artifactId>mockachino</artifactId>
<version>1.0.0</version>
<scope>test</scope>
</dependency>
public class Library {
private BookDao bookDao;
public Library(BookDao bookDao) {
this.bookDao = bookDao;
}
public boolean borrowBook(String bookId, String memberId) {
Book book = bookDao.findById(bookId);
if (book != null && book.isAvailable()) {
book.setAvailable(false);
book.setBorrowedBy(memberId);
return true;
}
return false;
}
}
public interface BookDao {
Book findById(String bookId);
}
public class Book {
private String id;
private boolean available;
private String borrowedBy;
// Getters and setters
}
import static org.mockachino.Mockachino.*;
import static org.mockachino.matcher.Matchers.*;
@Test
public void testBorrowBook() {
BookDao bookDao = mock(BookDao.class);
when(bookDao.findById(anyString())).thenReturn(null);
Library library = new Library(bookDao);
boolean result = library.borrowBook("12345", "John");
verifyOnce().on(bookDao).findById("12345");
assertThat(result, is(false));
}