2017-09-05 45 views
1

當使用REST Assured和REST Docs時,我有一個問題,請求的端口已更新,但響應中的所有HATEOAS鏈接指向任何解決測試運行。Spring REST Docs - 從REST確保測試生成的響應代碼段中更新URI

從REST文檔的文檔,我看到如何使用預處理器更新的要求:

.addFilter(document("{class-name}/{method-name}/{step}", preprocessRequest(
    modifyUris().scheme("http") 
      .host("localhost") 
      .port(9999), 
    removeHeaders("Accept")))) 

,但無法找到,如果有支持修改端口INT的響應。舉例來說,當我想在配置中的端口設置爲9999:

捲曲request.adoc:(這是一件好事:本地主機:9999)

$ curl 'localhost:9999/request/data' -i 

響應體。 ADOC:(我想改變本地主機:51123爲localhost:9999)

{ 
    "_links" : { 
    "requests" : { 
     "href" : "localhost:51123/request/data/requests{?page,size,sort,projection}", 
     "templated" : true 
    }, 
    "users" : { 
     "href" : "localhost:51123/request/data/users{?projection}", 
     "templated" : true 
    }, 
    "profile" : { 
     "href" : "localhost:51123/request/data/profile" 
    } 
    } 
} 

的是使用REST Docs或REST Assured來修改響應的內容是否可接受?我想我可以創建一個@AfterClass方法來解析更新這些資源,但我希望有更清潔的東西。


[後續] 我接受了來自安迪·W.下面的答案,但希望提供;誰具有同樣的問題,任何額外的信息 -

我的問題是,我是想添加文件過濾兩次:

.addFilters(Arrays.asList(
    document("{class-name}/{method-name}/{step}", 
     preprocessRequest(modifyUris().scheme("http") 
            .host("localhost") 
            .port(9999))), 
    document("{class-name}/{method-name}/{step}", 
     preprocessResponse(modifyUris().scheme("http") 
             .host("localhost") 
             .port(9999)))) 

與調用文件的方法與參數:

RestDocumentationFilter文件(字符串標識,OperationRequestPreprocessor requestPreprocessorOperationResponsePreprocessor responsePreprocessor,片段...片段)

https://docs.spring.io/spring-restdocs/docs/current/api/org/springframework/restdocs/restassured3/RestAssuredRestDocumentation.html#document-java.lang.String-org.springframework.restdocs.operation.preprocess.OperationRequestPreprocessor-org.springframework.restdocs.operation.preprocess.OperationResponsePreprocessor-org.springframework.restdocs.snippet.Snippet...-

一旦我做了改變這一切都按預期。 乾杯!

回答

1

是的,有。從the documentation

modifyUrisRestAssuredPreprocessors上可用於修飾任何的URI中的請求或響應。在使用REST Assured時,這允許您在測試本地服務實例時自定義出現在文檔中的URI。

+0

謝謝安迪的澄清,併爲所有的真棒工作和支持你在春天提供的所有! 接受你的答案,並添加一些更多的細節,我的問題。 – Groater