Я реализовал простой контроллер с простым запросом/ответом.Как проверить выход ошибки контроллера загрузки Spring?
Контроллер
@RestController
@RequestMapping("/")
public class HelloWorldController extends AbstractRestController {
@RequestMapping(value = "/hello", method = RequestMethod.POST)
public HelloWorldResponse sayHello(@Valid @RequestBody HelloWorldRequest request) {
String message = String.format("Hello %s!", request.getSayHelloTo());
return new HelloWorldResponse(message);
}
}
Запрос
public class HelloWorldRequest {
@NotEmpty
@NotNull
private String sayHelloTo;
protected HelloWorldRequest() {
}
public HelloWorldRequest(String sayHelloTo) {
this.sayHelloTo = sayHelloTo;
}
public String getSayHelloTo() {
return sayHelloTo;
}
@Override
public String toString() {
return "HelloWorldRequest{" +
"sayHelloTo='" + sayHelloTo + '\'' +
'}';
}
}
Когда я хочу, чтобы проверить правильность вывода для обработки ошибок по умолчанию я, кажется, не в состоянии проверить выход формата json по умолчанию, используя единичный тест. Ответ всегда кажется пустым. Когда я запускаю запрос с помощью обычной команды curl, вы видите правильный ответ. Я предполагаю, что это связано с тем, что возвращенный JSON не может быть отображен на HelloWorldResponse. Есть ли способ проверить, является ли возвращаемый вывод действительным для тела ответа?
Тест
class TestSpec extends Specification {
MockMvc mockMvc
def setup() {
mockMvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build()
}
def "Test simple action"() {
when:
def response = mockMvc.perform(post("/hello")
.contentType(MediaType.APPLICATION_JSON)
.content('{"sayHelloTo": ""}')
)
then:
response.andExpect(status().isOk())
}
}
Json Response
{
"timestamp" : 1426615606,
"exception" : "org.springframework.web.bind.MissingServletRequestParameterException",
"status" : 400,
"error" : "Bad Request",
"path" : "/welcome",
"message" : "Required String parameter 'name' is not present"
}
Не могли бы вы показать нам свой тест? –
Черт .. забыли тест действительно! Добавил его к вопросу. – Marco