gpt4 book ai didi

java - 我无法在 Spring boot 应用程序中使用mockito 来模拟 Dao 方法

转载 作者:行者123 更新时间:2023-12-02 10:00:30 25 4
gpt4 key购买 nike

我无法在 Spring Boot 中模拟 Dao 方法。请让我知道我在下面的代码中做错了什么。我尝试使用 SpringJUnit4ClassRunner 并模拟 Dao 方法。但它仍然进入 Dao 方法而不是返回模拟值。我也尝试过使用 MockitoJUnitRunner 但当时无法调用服务方法,因为它获取 null 值。

@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);

}

}

最佳答案

您不需要@InjectMocks并使用@MockBean而不是@Mock:

@Autowired
HomeController homeController;

@MockBean
HomeDao homeDao;

您也不需要需要此部分:

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

关于java - 我无法在 Spring boot 应用程序中使用mockito 来模拟 Dao 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55667883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com