Мне нужно протестировать метод обслуживания с помощью mocking dao.А также мне нужно протестировать метод dao, чтобы узнать, работает ли метод правильно. Но я не могу интегрировать mockito с весенней загрузкой.Если я использую MockitoJUnitRunner
первый тест работает, если я использую SpringJUnit4ClassRunner
второй тест работает.Я также попытался использовать @MockBean
вместо @Mock
, но он тоже не работает.
//SpringJUnit4ClassRunner
//MockitoJUnitRunner
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class BookServiceTests {
@Mock
private BookDao bookDao;
@Autowired
private BookDao bookDao2;
private List<Book> listOfBooks;
@InjectMocks
@Autowired
private BookService bookService;
@PersistenceContext
private EntityManager entityManager;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testGetMostPopularBooksInService() {
fillListOfBooks();
when(bookDao.selectMostPopularBooks(3, 3)).thenReturn(listOfBooks);
assertEquals(3, bookService.getMostPopularBooks(0, 3).size());
}
@Test
@Transactional
public void testSelectMostPopularBooks() {
fillDBByBooks();
List<Book> listOfPopularBooks = bookDao2.selectMostPopularBooks(0, 3);
assertEquals(3, listOfPopularBooks.size());
assertEquals("Марсианинн", listOfPopularBooks.get(0).getName());
}
private void fillListOfBooks() {
Writer writer = new Writer(3, "Джек", "Лондон", "...", null);
listOfBooks = new ArrayList<>();
listOfBooks.add(new Book(6, "Зов предков", 1990, writer, "...",
10, new HashSet<>(Arrays.asList(new Genre(1, "Психология")))));
listOfBooks.add(new Book(8, "Зов предков", 1990, writer, "...",
25, new HashSet<>(Arrays.asList(new Genre(1, "Психология")))));
listOfBooks.add(new Book(10, "Зов предков", 1990, writer, "...",
35, new HashSet<>(Arrays.asList(new Genre(1, "Психология")))));
}
private void fillDBByBooks() {
Writer writer = new Writer(28, null, null, null, null);
entityManager.persist(new Book(0, "Огонь и вода", 1990, writer, "...",
105, new HashSet<>(Arrays.asList(new Genre(1, "Психология")))));
entityManager.persist(new Book(0, "Солнце", 1990, writer, "...",
150, new HashSet<>(Arrays.asList(new Genre(1, "Психология")))));
entityManager.persist(new Book(0, "Космос", 1990, writer, "...",
200, new HashSet<>(Arrays.asList(new Genre(1, "Психология")))));
entityManager.persist(new Book(0, "Марсианин", 1990, writer, "...",
225, new HashSet<>(Arrays.asList(new Genre(1, "Психология")))));
}
}