我试图遵循https://jersey.java.net/documentation/latest/bean-validation.html#d0e13678中的示例,尤其是第18.4.3节。我想禁止json缺少Foo.number的地方。但我的测试返回状态200.这是我的测试的全文(我的pom中有jersey-bean-validation工件):
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);
}
}
答案 0 :(得分:0)
PEBKAC - 我会留下这个问题,以防有人开始进行验证并需要一个愚蠢的" Hello World"测试