Проблема с BeanValidation
Я пытаюсь следовать примеру в https://jersey.java.net/documentation/latest/bean-validation.html, esp. раздел 18.4.3. Я хочу запретить json, где отсутствует Foo.number. Но мой тест возвращает статус 200. Вот полный текст моего теста (у меня есть артефакт проверки качества джерси-боба в моем pom):
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.Response;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.jackson.JacksonFeature;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.test.JerseyTest;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
public class DeleteMe extends JerseyTest {
@Path("/")
public static class Resource {
@POST
@Produces("application/json")
public Foo post(@Valid Foo foo) {
return foo;
}
}
public static class Foo {
@NotNull
private Integer number;
public void setNumber(final Integer number) {
this.number = number;
}
public Integer getNumber() {
return number;
}
}
@Override
protected Application configure() {
return new ResourceConfig(Resource.class)
.register(JacksonFeature.class);
}
@Override
protected void configureClient(final ClientConfig config) {
config.register(JacksonFeature.class);
}
@Test
public void testEntityFail() throws Exception {
Foo foo = new Foo();
Response response = target().request().post(javax.ws.rs.client.Entity.json(foo));
//I get 200 here...but foo is no good
assertTrue("Status "+response.getStatus(),response.getStatus() == 400);
}
}
1 ответ
PEBKAC - я оставлю этот вопрос на тот случай, если кто-то начинает проверку и нуждается в тесте "Hello World"