spring云契约、主体和执行方法未验证响应

yc0p9oo0  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(232)

我有以下spring cloud合同:

package contracts.teams

import org.springframework.cloud.contract.spec.Contract

Contract.make {
    name"d Find team roles by filters"
    description "Find team roles by filters"

    request {
        method "POST"
        url "api/team/findTeamRolesByFilters"
        headers {
            contentType applicationJson()
            accept applicationJson()
            header"Authorization", execute('bearerOfAccessToken()')
        }
        body execute('getRequestForFindTeamRolesByFilters()')
    }

    response {
        status OK()
        headers {
            contentType applicationJson()
        }
        body execute('getResponseForFindTeamRolesByFilters()')
    }
}

我在响应处调用getresponseforfindteamrolesbyfilters(),以便从服务器生成动态响应。例如,原因可能是来自db的自动生成的id。从getresponseforfindteamrolesbyfilters()生成的字符串是一个有效的json,不幸的是,它被忽略了,并且在测试运行时总是返回true。
当我用如下静态响应替换execute方法时,我注意到了这一点:

"""
{
   "success": "false"
}
"""

在这种情况下,响应被正确验证,如果不匹配,则测试失败。我所说的正被测试生成的代码所证实,正如在这里可以看到的:

// then:
            assertThat(response.statusCode()).isEqualTo(200);
            assertThat(response.header("Content-Type")).matches("application/json.*");

        // and:
            DocumentContext parsedJson = JsonPath.parse(response.getBody().asString());
            getResponseForFindTeamRolesByFilters();

如你所见,没有Assert。它只调用生成json的方法。
我应该如何让测试检查动态json响应?谢谢您!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题