当从postman发出请求时,返回数据,但是在junit5测试中,我的api返回一个空列表。
如何让我的测试命中我的真实数据库并返回数据?
@ExtendWith(SpringExtension.class)
@WebMvcTest(UserController.class)
class UserControllerTest {
@Autowired
MockMvc mockMvc;
@Autowired
WebApplicationContext webApplicationContext;
@MockBean
private UserService userService;
@MockBean
private UserRepository userRepository;
@BeforeEach
void setUp() {
mockMvc = webAppContextSetup(webApplicationContext).build();
}
@Test
void getAllData() throws Exception {
MvcResult result = mockMvc.perform(get("/getAllData"))
.andExpect(status().isOk())
.andReturn();
System.out.println("My Result" + result.getResponse().getContentAsString());
}
}
2条答案
按热度按时间m3eecexj1#
检查您的测试是否使用其他数据库配置(在test/resources/application.properties文件或.yml文件中配置)。
可能您不使用postman访问同一个数据库示例,而使用test方法访问同一个数据库示例。
gmol16392#
在单元测试中从真实数据库中获取数据不被认为是标准实践。相反,您可以创建mock对象,它将“模拟”或“模仿”真实数据库的行为。
另外,由于您正在测试控制器,因此不需要存储库的模拟bean。被测试的组件及其直接的继承者(这里是服务类)只需要存在。