为了账号安全,请及时绑定邮箱和手机立即绑定

尝试测试具有存储库的服务的控制器(Spring Boot)的问题

尝试测试具有存储库的服务的控制器(Spring Boot)的问题

肥皂起泡泡 2021-09-12 10:38:42
我试图建立一个测试的ClienteController.java,它使用ClienteService.java的是使用ClienteRepository.java到Cliente.class我正在使用mvn test命令运行测试。所以我试图使用WebMvcTest将测试隔离到 web 层。我正在关注此示例,该示例无需堆栈上的存储库(测试 Web 层)代码客户端控制器.java@Controllerpublic class ClientesController {    private final String view = "clientes";    @Autowired    ClienteService clienteService;    @GetMapping("/clientes")    public ModelAndView clientes() {        ModelAndView mv = new ModelAndView(view);        mv.addObject("listar", true);        mv.addObject("clientes", this.clienteService.listarClientes());        return mv;    }}客户端服务.java@Servicepublic class ClienteService {    private final ClienteRepository clienteRepository;    @Autowired    public ClienteService(ClienteRepository clienteRepository) {        this.clienteRepository = clienteRepository;    }    public List<Cliente> listarClientes(){        return clienteRepository.findAll();    }}ClienteREpository.class@Repositorypublic interface ClienteRepository extends JpaRepository<Cliente, Integer> {    @Query("SELECT c FROM Cliente c WHERE c.id = ?1")    Cliente findOne(Integer clienteId);}客户端控制器测试.java@RunWith(SpringRunner.class)@WebMvcTest(ClientesController.class)public class ClientesControllerTest {    @Autowired    private MockMvc mockMvc;    @Mock    private ClienteRepository clienteRepository;    @Test    public void contexLoads() throws Exception {    }}
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

请参阅文档:

使用此注释将禁用完全自动配置,而是仅应用与 MVC 测试相关的配置(即@Controller、@ControllerAdvice、@JsonComponent、Converter/GenericConverter、Filter、WebMvcConfigurer 和 HandlerMethodArgumentResolver bean,但不应用 @Component、@Service 或 @Repository bean )。

特别是,@Servicebean 没有被配置。假设仅@WebMvcTest用于测试 mvc 层,其他一切都应该被模拟。您应该ClienteService单独模拟您的和测试,可能使用单元测试。或者,@SpringBootTest如果您想配置整个应用程序,您可以使用,或者您可以简单地@Import使用缺少的服务。


查看完整回答
反对 回复 2021-09-12
  • 2 回答
  • 0 关注
  • 113 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信