drowpizard リソースから返されたビューが正しく組み立てられていることをテストしようとしています。具体的には、ユーザーを追加するビューには、特定のルールを満たさない場合にパスワード チェッカーがユーザーの作成を拒否できるようにするフィールドがあります。ビューは、webapp をデプロイして実行し、不適切なパスワードを指定するとうまく機能しますが、単体テストを実行しようとすると、ビューにメッセージ本文ライターがないことを示す Web アプリケーション例外がスローされます。
私の単体テストはかなり単純です:
@Test
public void testBadPassword(){
ClientResponse response = null;
try {
response=client().resource("/users").post(ClientResponse.class, createUserParameters);
Status status = response.getClientResponseStatus();
assertEquals(Status.SEE_OTHER, status);
} finally {
if (response != null) {
response.close();
}
}
}
サーバー 500 エラーが返されますが、これは次の中に埋もれています。
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class com.seeker.stm.resources.views.AddUserView, and Java type class com.seeker.stm.resources.views.AddUserView, and MIME media type text/html was not found
at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:285)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1448)
リクエストを処理し、ビューとレスポンスを生成するリソースは次のようになります。
@Path("/users")
public class UserResource {
public Object addUser(@FormParam("username") String username,
@FormParam("password") String password,
@FormParam("email") String email){
Set<String> passwordErrors = passwordChecker.checkValidity(password, username, email);
if (!passwordErrors.isEmpty()) {
return new AddUserView(userDAO.getAllActive(), passwordErrors);
}
// ...
}
私は例外を理解できます (StringProvider や ByteArrayProvider のように、それが知っているライターは、応答やビューなどに対しては機能しません) が、どちらかの応答を返すことができるリソースを適切にテストする方法を知りたいです。コード、またはビュー。