簡體   English   中英

Jersey 測試 - 未調用 ExceptionMapper

[英]Jersey test - ExceptionMapper is not invoked

我有 REST Web 服務,我使用 Jersey Test、Mockito、Junit 進行測試。 當 Web 服務方法成功執行時,我得到正確的響應。 如果數據無效,則拋出自定義異常,必須由 ExceptionMapper 處理。 它應該返回相同的結構響應,但具有不同的代碼。 ExceptionMapper 在非測試環境中運行良好。 但是,經過測試執行日志顯示:

1 < 500
1 < Connection: close
1 < Content-Length: 1033
1 < Content-Type: text/html;charset=ISO-8859-1
1 < Date: Wed, 30 Mar 2016 11:55:37 GMT

javax.ws.rs.InternalServerErrorException: HTTP 500 Request failed.
at org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:1020)
at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:816)
at org.glassfish.jersey.client.JerseyInvocation.access$700(JerseyInvocation.java:92)

我使用:

<dependency>
    <groupId>org.glassfish.jersey.test-framework.providers</groupId>
    <artifactId>jersey-test-framework-provider-grizzly2</artifactId>
    <version>2.22.2</version>
</dependency>

由測試類擴展的模擬服務的縮短版本:

public class MockedService extends JerseyTest {

    @Override
    public ResourceConfig configure() {

        forceSet(TestProperties.CONTAINER_PORT, "8080");
        enable(TestProperties.LOG_TRAFFIC);

        return new ResourceConfig().register(new Service());
    }
}

如何從 ExceptionMapper 獲得響應?

您仍然需要注冊ExceptionMapper

return new ResourceConfig()
        .register(new Service())
        .register(new YourMapper());

在您的真實環境中,可能會使用包掃描或類路徑掃描來掃描映射器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM