簡體   English   中英

如何聲明由SpringFramework的org.springframework.http.ResponseEntity類設置的“ Content-Type”?

[英]How to assert “Content-Type” set by SpringFramework's org.springframework.http.ResponseEntity class?

我的示例應用程序中有一個GET Rest-endpoint,它根據條件返回一些數據,如果沒有可用的HTTP狀態為204數據,則它也可以返回null,否則返回200 OK

@GetMapping("/homepage")
    public ResponseEntity getHomePageCollections(@RequestHeader(value = HEADER_APP_TOKEN) String headerAppToken) {
        CollectionObject homepageCollections = null;
        String errorMessage = null;
        HttpStatus httpStatus;
        try {
            homepageCollections = collectionService.getHomePageCollections();
            if (nonNull(homepageCollections)) {
                httpStatus = HttpStatus.OK;
                LOGGER.info("{} Response Status from CollectionController -- getHomePageCollections !! {}", TRANSACTION_SUCCESS_CODE, TRANSACTION_SUCCESS);
            } else {
                httpStatus = HttpStatus.NO_CONTENT;
                LOGGER.info("{} Response Status from CollectionController -- getHomePageCollections !! {}", NO_CONTENT_CODE, NO_CONTENT);
            }
        } // catch logic
        return ResponseEntity.status(httpStatus).contentType(MediaType.APPLICATION_JSON).body(httpStatus == HttpStatus.OK || httpStatus == HttpStatus.NO_CONTENT ? homepageCollections : errorMessage);
    }
  • 我有2個問題,首先是如何斷言內容類型是由控制器在我的單元測試中設置的

單元測試

@Test
    public void testGetHomePageCollection() {
        when(collectionService.getHomePageCollections()).thenReturn(null);

        ResponseEntity responseEntity = collectionController.getHomePageCollections(HEADER_APP_TOKEN);
        assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT);
    }
  • homepageCollections為null時,spring會將內容類型自動設置為octet-stream ,這背后有原因嗎?

ContentType顯示在響應的標題中,因此您可以通過如下方式對其進行測試:

@Test
        public void testGetHomePageCollection() {
            when(collectionService.getHomePageCollections()).thenReturn(null);

            ResponseEntity responseEntity = collectionController.getHomePageCollections(HEADER_APP_TOKEN);
            assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.NO_CONTENT);
            assertThat(responseEntity.getHeaders().getContentType()).isEqualTo(MediaType.APPLICATION_JSON_VALUE);
        }

暫無
暫無

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

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