Тестируемый экземпляр (PlaylistBusinessBean) внедряется структурой DI.Этот, однако, не использует макет PlaylistDaoBean, созданный в тесте.Макет - это просто локальная переменная, и он нигде не используется.
Вместо использования внедренного экземпляра PlaylistBusinessBean создайте его программно и передайте макет PlaylistDaoBean:
public class PlaylistBusinessTest {
@Test
public void testRemoveTracks() throws Exception {
PlayList playList = new PlayList();
playList.setId(222)
playList.setName("fake name");
PlaylistDaoBean playlistDaoBeanMock = mock(PlaylistDaoBean.class);
when(playlistDaoBeanMock.getPlaylistByUUID(uuid)).thenReturn(playList);
PlaylistBusinessBean playlistBusinessBean = new PlaylistBusinessBean(playlistDaoBeanMock);
playlistBusinessBean.removeTracks(uuid, Arrays.asList(2, 3));
}
Общие примечания:
- Этомодульное тестирование, поэтому я всегда рекомендовал бы тестировать код изолированно, независимо от DI и любого внедренного кода.
- Однако, если это действительно необходимо, обычно также возможен специфичный для теста контекст DI, который создает инъекционные макетык тестируемым бобам, где это необходимо.Как это сделать, зависит от используемого DI.