我正在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);
}
谢谢。
答案 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层的依赖,并且该服务更易于在其他代码中重用。