testing - Testcafe对端点的多个请求同步不起作用
问题描述
目前我正在设置 testcafe,并且在向同一端点发出请求时遇到了障碍。
这是一个身份验证请求。目前的步骤是:
- 初始请求被发送到以正文响应的服务器。这是等待
- 一旦从步骤 1 中检索到步骤,它就会发生变异并发送回服务器。
- 然后我们使用相同的端点并传入步骤 2 中生成的主体
但是我在 testcafe 测试中遇到问题,因为它总是使用第一个请求并返回两次。
我在 testcafe https://github.com/DevExpress/testcafe/issues/2477 上提到了这个问题,但是这不起作用。
const mock = (mockResponse, status) => {
return RequestMock()
.onRequestTo(/\/apitest\/authenticate\)
.respond(mockResponse, status, {
"Access-Control-Allow-Origin": "http://localhost:3000",
"Access-Control-Allow-Credentials": "true"
});
};
const mock1 = mock(RESPONSE1, 200);
const mock2 = mock(RESPONSE2, 200);
test.requestHooks(mock1)(
"Should redirect to error if user has been suspended after submitting",
async t => {
const usernameInput = Selector("#username");
const mobileDigitOne = Selector("#mobile-digit-0");
const mobileDigitTwo = Selector("#mobile-digit-1");
const mobileDigitThree = Selector("#mobile-digit-2");
const submitButton = Selector("#submit-button");
await t
.typeText(usernameInput, "username123456")
.click(digits)
.typeText(digits, "123456")
.click(submitButton);
await t.removeRequestHooks(mock1);
await t.addRequestHooks(mock2);
关于如何多次请求同一个端点的任何想法?
解决方案
您可以使用请求正文区分对同一端点的不同请求。您可以将不同类型的过滤器传递给模拟onRequestTo
方法,包括谓词函数。有关更多详细信息,请参阅带有谓词的过滤器文章。
因此,您可以对两个请求使用一个模拟,如下所示:
function isTheSecondRequest(requestBody) {
// This should return `true` for the mutated request body
// and `false` for the original one.
//
// For example:
return requestBody.indexOf('{ foo: bar }') !== -1;
}
const mock = RequstMock()
.onRequestTo(request => {
request.url === '/apitest/authenticate' &&
!isTheSecondRequest(request.body)
})
.respond(RESPONSE1, 200, HEADERS)
.onRequestTo(request => {
request.url === '/apitest/authenticate' &&
isTheSecondRequest(request.body)
})
.respond(RESPONSE2, 200, HEADERS);
推荐阅读
- javascript - 溢出-x 滚动不适用于 chrome 和 Firefox
- modelica - 在循环内创建多个 CombiTimeTable
- python - 烧瓶在请求上下文之外工作。但我不认为我是
- javascript - 将 blob 转换为 pdf 文件
- pyspark - agg 中计数函数的 pyspark 奇怪行为
- excel - 在范围内插入 SUMIF 公式
- python - 如何理解/调试/可视化 U-Net 分割结果
- if-statement - 如何比较IF语句中的两个变量?
- reporting-services - SSRS-Report - 如何从参数中获取表名
- python - 2D-Fourier-Transformation - 正确的顺序标签?