猿问

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

我试图建立一个测试的ClienteController.java,它使用ClienteService.java的是使用ClienteRepository.java到Cliente.class


我正在使用mvn test命令运行测试。


所以我试图使用WebMvcTest将测试隔离到 web 层。我正在关注此示例,该示例无需堆栈上的存储库(测试 Web 层)


代码

客户端控制器.java

@Controller

public 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

@Service

public class ClienteService {


    private final ClienteRepository clienteRepository;


    @Autowired

    public ClienteService(ClienteRepository clienteRepository) {

        this.clienteRepository = clienteRepository;

    }


    public List<Cliente> listarClientes(){

        return clienteRepository.findAll();

    }

}

ClienteREpository.class

@Repository

public 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 {


    }

}


肥皂起泡泡
浏览 114回答 2
2回答

慕码人2483693

请参阅文档:使用此注释将禁用完全自动配置,而是仅应用与 MVC 测试相关的配置(即@Controller、@ControllerAdvice、@JsonComponent、Converter/GenericConverter、Filter、WebMvcConfigurer 和 HandlerMethodArgumentResolver bean,但不应用 @Component、@Service 或 @Repository bean )。特别是,@Servicebean 没有被配置。假设仅@WebMvcTest用于测试 mvc 层,其他一切都应该被模拟。您应该ClienteService单独模拟您的和测试,可能使用单元测试。或者,@SpringBootTest如果您想配置整个应用程序,您可以使用,或者您可以简单地@Import使用缺少的服务。
随时随地看视频慕课网APP

相关分类

Java
我要回答