Я не могу издеваться над методом Дао, используя mockito в загрузочном приложении Spring - PullRequest
0 голосов
/ 13 апреля 2019

Я не могу издеваться над методом Дао при весенней загрузке.Пожалуйста, дайте мне знать, что я делаю неправильно в приведенном ниже коде.Я попытался использовать SpringJUnit4ClassRunner и смоделировать метод Дао.Но все же, он идет в метод Дао, а не возвращает фиктивное значение.Я также пытался с MockitoJUnitRunner, но в этот раз не смог вызвать метод сервиса, так как он получает нулевое значение.

@RestController
public class HomeController {

    @Autowired
    HomeSeriveInterface service;

    @Autowired
    HomeDaoImpl homeDao;

    @GetMapping(value="/getData")
    public String Data() {
        System.out.println("Inside Controller");
        List < Map < String, Object >> rows = service.getData();
        return "Hi Yogita" + rows;
    }

}

@Service
public class HomeService implements HomeSeriveInterface{

    @Autowired
    HomeDao dao;

    @Override
    public List<Map<String, Object>> getData() {
        System.out.println("Inside Service");
        return dao.getData();
    }

}

@Repository
public class HomeDaoImpl implements HomeDao{

    @Autowired
     @Qualifier("jdbcTemplate1")
     private JdbcTemplate jdbcTemplate;

    @Override
    public List < Map < String, Object >> getData() {
        System.out.println("Inside Dao");
        List < Map < String, Object >> rows = jdbcTemplate.queryForList("SELECT * FROM COURCES");
        return rows;
    }

}

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class CcdWebApplicationTests {


    @InjectMocks
    @Autowired
    HomeController homeController;

    @Mock
    HomeDao homeDao;

    @Before
    public void init() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void getDataTest() {
        System.out.println("testing *******");
        List < Map < String, Object >> data = null;
        Mockito.when(homeDao.getData())
        .thenReturn(data);
        System.out.println("2nd *");
        String data2 = homeController.Data();
        System.out.println(data2);

    }

}

1 Ответ

1 голос
/ 13 апреля 2019

Вам не нужно @InjectMocks и используйте @MockBean вместо @Mock:

@Autowired
HomeController homeController;

@MockBean
HomeDao homeDao;

Вам также не нужна эта часть:

@Before
public void init() {
    MockitoAnnotations.initMocks(this);
}
...