Как проверить службу отдыха, возвращающую логическое значение в ответ, используя TestRestTemplate - PullRequest
0 голосов
/ 10 января 2019

У меня есть служба отдыха, написанная с использованием Spring Boot, как показано ниже:

@RestController
class MyBankingController{

@GetMapping("/getCards")
public SomePOJO getCards(){}

@GetMapping("/cardPresent")
public boolean isCardPresent(@RequestParam(value = "username") String 
username){

 //calls service layer to return primitive true or false
}
}

Ниже мой тестовый класс:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MyBankingApplication.class, webEnvironment = 
SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyBankingControllerIT {

private MyBankingController myBankingController;
private TestRestTemplate restTemplate;
private static final String BASE_URL = "/company/cards";
HttpHeaders headers = new HttpHeaders();
String username = "1234";

@Autowired
private MyBankingService myBankingService;

@LocalServerPort
private int port;

@Before
public void setUp() throws Exception {

    myBankingController = new MyBankingController(myBankingService);

    restTemplate = new TestRestTemplate();
}

@Test
public void testIsCardPresent() throws JSONException {
    String url = BASE_URL+"cardPresent?username="+username;

    HttpEntity<String> entity = new HttpEntity<String>(null, headers);

    ResponseEntity<Boolean> response = restTemplate.exchange(
            createURLWithPort(url),
            HttpMethod.GET, entity, Boolean.class);

    assertTrue(response.getBody());
}

private String createURLWithPort(String uri) {
    return "http://localhost:" + port + uri;
}
}

Я не могу проверить этот тип логического возврата. Я пробовал несколько разных вещей, но это не работает. Я получаю ошибку ниже.

org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of java.lang.Boolean out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.lang.Boolean out of START_OBJECT token at [Source: (PushbackInputStream); line: 1, column: 1]

Пожалуйста, обратите внимание, что приведенный выше код является всего лишь настраиваемой версией фактического кода, и в настоящий момент невозможно изменить тип возврата или контроллер. Не могли бы вы рассказать мне, как это проверить?

...