【发布时间】:2019-03-22 07:01:16
【问题描述】:
所有进入赛普拉斯的 POST 和 PUT XMLHttpRequest 最近都开始抛出 417 Expectation Failed。但是,当我手动浏览 Web 应用程序时,所有这些都可以在 Web 应用程序中运行。
我所有的代码过去都运行良好,没有任何问题。
我在互联网上了解到此错误,但我不确定此问题是否存在于被测应用程序、某些防火墙策略或赛普拉斯中的某些设置可以修复它。
Cypress.Commands.add("Post_Client", () => {
cy.fixture(Cypress.env("ClientInputFile")).then(clientoBJ => {
cy.fixture(clientoBJ.imagePath, "binary").then(imageBin => {
Cypress.Blob.binaryStringToBlob(imageBin, clientoBJ.imageType).then(
blob => {
const xhr = new XMLHttpRequest();
const data = new FormData();
data.set(clientoBJ.nameatr, clientoBJ.nameVal);
data.set(clientoBJ.imageatr, blob);
xhr.open(
"POST",
Cypress.env("APIBaseURL") + Cypress.env("ClientPostURL"),
false
);
xhr.setRequestHeader("accept", "application/json");
xhr.setRequestHeader("access-token", accesstoken);
xhr.setRequestHeader("client", client);
xhr.setRequestHeader("expiry", expiry);
xhr.setRequestHeader("token-type", tokentype);
xhr.setRequestHeader("uid", uid);
xhr.onload = function() {
if (this.status === 201) {
cy.writeFile(
Cypress.env("ClientOutputFile"),
JSON.parse(this.responseText)
);
cy.readFile(Cypress.env("IDStore")).then(obj => {
obj.clientID = JSON.parse(this.responseText).client.id;
cy.writeFile(Cypress.env("IDStore"), obj);
});
}
};
xhr.send(data);
}
);
});
});
});
然后在测试中调用它
it.only("CLIENT API POST TEST", () => {
cy.Post_Client();
});
【问题讨论】:
-
您可以通过 Postman/任何 ReST 客户端尝试相同的请求,看看是否可以重现?我们会知道是应用程序问题还是赛普拉斯问题。
-
这些请求在 POSTMAN 和 App UI 中运行良好。当我从赛普拉斯执行此操作时,问题浮出水面。这非常令人困惑,因为这适用于某些 API 而不适用于其他 API。