微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何确保仅当 Rest Assured 中不存在标题时才添加标题?

如何解决如何确保仅当 Rest Assured 中不存在标题时才添加标题?

我正在动态创建请求。获得令牌后,我将其添加为标头。当我尝试多次击中端点时出现问题。我最终添加了多个具有完全相同标记的标头。有没有办法可以在请求中查找可用标头并仅在标头不存在时添加标头?

public class PutUpdateCampaign extends PingPongRequest {



    @Steps
    GetToken getToken;

    @Step
    private String getToken() {
        return getToken.usingCredentials(AccessLevel.CREATE_CAMPAIGN).jsonPath().get("token");
    }

    private RequestSpecification getRequestSpecification() {
        QueryableRequestSpecification query = SpecificationQuerier.query(requestSpecification);
        Headers reqHeaders = query.getHeaders();
        if (reqHeaders.hasHeaderWithName("Authorization")) {
            return requestSpecification;
        }
        return requestSpecification.headers("Authorization","Token " + getToken());

    }
    @Override
    public <UpdateCampaign> Response withParameters(UpdateCampaign details) {

        return requestSpecification
                .spec(getRequestSpecification())
                .body(details)
                .log().all()
                .put( WebServiceEndPoints.CREATECAMPAIGN.getUrl() + "/" + UpdateCampaignStepDeFinitions.createdCampaignId)
                .then()
                .log().all()
                .extract().response();
    }


}

乒乓请求:

public abstract class PingPongRequest {

    public RequestSpecification requestSpecification = SerenityRest.given()
            .header("Accept","application/json")
            .header("Content-Type","application/json");

    @Step("with parameters")
    protected abstract <T> Response withParameters(T details);

}

如果我在测试中调用 withParameters 两次,我会得到两个 Authorization 标头。

    Headers:            Accept=application/json
                                Authorization=Token ddffgg
                                Authorization=Token ddffgg

当前代码结果

groovy.lang.MissingMethodException: No signature of method: static io.restassured.internal.SpecificationMerger.merge() is applicable for argument types: (io.restassured.internal.RequestSpecificationImpl,net.serenitybdd.rest.decorators.request.RequestSpecificationDecorated$ByteBuddy$3LuBUN60) values: [io.restassured.internal.RequestSpecificationImpl@2da27453,net.serenitybdd.rest.decorators.request.RequestSpecificationDecorated$ByteBuddy$3LuBUN60@2da27453]

欢迎任何关于更好地构建我的方法的建议。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。