Testcafe到端点的多个请求同步不起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
方法,包括谓词函数。有关更多详细信息,请参见Filter with a Predicate文章。
因此,您可以对两个请求使用一个模拟,就像这样:
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);
以上是关于Testcafe到端点的多个请求同步不起作用的主要内容,如果未能解决你的问题,请参考以下文章
具有多个grant_type的Spring Oauth2授权服务器用户信息端点不起作用