如何模拟ResponseEntity <?>方法

时间:2020-05-23 06:27:46

标签: spring-boot unit-testing junit mockito

我正在Spring Boot中实现单元测试,但无法使它们正常工作。

这是RoulletController类中的我的方法。

@PutMapping("/open_roulette/")
    public ResponseEntity<?> enableRoluette(@RequestParam("id") Long id) {
        return rouletteService.enableRouletteById(id);
    }

这是我在RouletteService类上的方法。

@Override
    public ResponseEntity<?> enableRouletteById(Long roulette_id) {
        Optional<Roulette> roulette = rouletteRepository.findById(roulette_id);
        HashMap<String, Object> response = new HashMap<String, Object>();
        if (roulette.isPresent()) {
            Roulette request = roulette.get();
            {
                if (!request.isRouletteStatus())
                    request.setBets(null);
            }
            request.setRouletteStatus(true);
            rouletteRepository.save(request);
            response.put("message", "La ruleta ha sido activada con éxito");
            response.put("roulette", request);

            return new ResponseEntity<Map<String, Object>>(response, HttpStatus.CREATED);
        } else {
            response.put("message", "La apuesta no es correcta");
            response.put("error", HttpStatus.BAD_REQUEST);

            return new ResponseEntity<Map<String, Object>>(response, HttpStatus.BAD_REQUEST);
        }
    }

这是我的测试方法RoulletControllerTest类,我正在尝试做这样的事情,但我得到了“ ThenTheReturn方法不适用于自变量,等等。

@Test
    public void testEnableRoluette() {

        HashMap<String, Object> response = new HashMap<String, Object>();

        ResponseEntity<?> responseEntity = new ResponseEntity<Map<String, Object>>(response, HttpStatus.CREATED);

        Mockito.when(rouletteService.enableRouletteById(14L)).thenReturn(responseEntity);
        assertEquals(rouletteController.enableRoluette(14L), responseEntity);
    }

谢谢。

1 个答案:

答案 0 :(得分:0)

它不喜欢q1 as rulevance_relation的{​​{1}}参数。如果您提供实类型,即可以工作。 ResponseEntity>。

错误消息暗示了这一点。它期望q1 = ------------------------------- | entity | relevance_relation | ------------------------------- | 1 | 1 | | 1 | 2 | | 1 | 3 | ------------------------------- and q2 = ------------------------------- | id. | relevance_type | ------------------------------- | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | 1 | | 5 | 1 | | 6 | 1 | ------------------------------- so q3 should be ------------------------------- | id. | relevance_type | ------------------------------- | 1 | 1 | | 2 | 1 | | 3 | 1 | ------------------------------- 但得到?

ResponseEntity

您还可以通过将响应处理移至控制器来改进代码。您的服务应只返回CAP#2。这样就消除了对Web层的依赖,并且该服务更易于在其他代码中重用。