我試圖測試從drowpizard資源返回的視圖是否正確組裝。具體而言,添加用戶的視圖具有一個字段,該字段允許密碼檢查器在未滿足特定規則時拒絕構建用戶的嘗試。該視圖在部署和運行Web應用程序以及指定錯誤密碼時效果很好,但是當我嘗試對其進行單元測試時,它會拋出Web應用程序異常,表明該視圖沒有消息正文編寫器。dropwizard中的單元測試視圖
我的單元測試是非常簡單的:
@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);
}
// ...
}
我可以理解的例外(th它所知道的作家,比如StringProvider和ByteArrayProvider,不適用於響應或視圖或其他東西),但我更想知道如何正確地測試可以返回響應代碼或視圖的資源。
謝謝,我會嘗試,當我回去工作。 – whiterook6
謝謝,那修復了這個異常。我現在得到了一個類似的例外,那就是沒有消息體READER,並且查看視圖包,看起來並沒有那樣的東西。是否還有另一個提供者需要添加,或者需要提供某種註釋以使單元測試正常工作? – whiterook6
看起來像Coda讓你解決:https://groups.google.com/forum/#!topic/dropwizard-user/fGjawn1HTzQ –