从Spring Mvc测试获取请求中提取内容

时间:2019-05-30 17:37:25

标签: kotlin code-documentation spring-mvc-test spring-restdocs

我现在正在使用spring rest文档,以生成我的API的文档,但是我无法处理来自请求的模拟响应。这些响应似乎是空的。

控制器方法看起来像:

@GetMapping()
    fun processBrowsePlayerRequest(transaction: Transaction, apiRequest: ApiRequest): Single<BrowsePlayerResponse?> {
        val applicationContext = RequestBasedApplicationContext(apiRequest)
        val standardContext = RequestBasedStandardContext(
                RequestBasedVersionContext(apiRequest),
                applicationContext,
                RequestBasedEditionContext(apiRequest, applicationContext),
                RequestBasedPlatformContext(apiRequest),
                transaction
        )
        val swidContext = RequestBasedSWIDContext(apiRequest)
        val uidContext = if (checkUIDPresent(apiRequest)) RequestBasedUIDContext(apiRequest) else null
        val seeAllContext = RequestBasedSeeAllContext(apiRequest)
        val requestBrowsePlayerContext = RequestBrowsePlayerContext(standardContext, swidContext, uidContext, seeAllContext, apiRequest)
        return browsePlayerService.getEntitiesBrowse(requestBrowsePlayerContext)
    }

在这一点上,我能够根据测试中看到的模拟响应:

enter image description here

但是在测试中,我不确定如何处理此响应,到目前为止,我还不知道如何提取此信息以进行处理并进行一些验证。

@Test
    @Throws(Exception::class)
    fun shouldReturnDefaultMessage() {
        val paramsMock = mapOf("swid" to "asudyasd-asdasd-asdasd", "seeAll" to true)
        `when`(apiRequest.parameters).thenReturn(paramsMock)
        `when`(browsePlayerServiceRepresentable.getEntitiesBrowse(anyObject())).thenReturn(Single.just(presentBrowsePlayers()))
        val result =this.mockMvc!!.perform(get("/v1/browse/players").flashAttr("apiRequest", apiRequest))
                .andExpect(status().isOk)
                .andDo(document("index", preprocessRequest(removeHeaders("Foo")),
                preprocessResponse(prettyPrint()))).andReturn()
        val reponse = result
    }

进行调试时,可以从控制器类中看到模拟的重新放置:

有什么想法吗?

0 个答案:

没有答案