Testcafe到端点的多个请求同步不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Testcafe到端点的多个请求同步不起作用相关的知识,希望对你有一定的参考价值。

当前,我正在设置testcafe,并且在向同一端点发出请求时遇到了障碍。

这是身份验证请求。当前的步骤是:

  1. 初始请求发送到服务器,该服务器以正文进行响应。这等待着
  2. 一旦从步骤1中检索到步骤,该变量就会被突变并发送回服务器。
  3. 然后我们使用相同的端点并传递在步骤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到端点的多个请求同步不起作用的主要内容,如果未能解决你的问题,请参考以下文章

TestCafe获取正在使用的代理的当前IP

总线刷新端点在春季云 Finchley.M8 中不起作用

具有多个grant_type的Spring Oauth2授权服务器用户信息端点不起作用

Passport req.logOut() 函数不起作用? [复制]

CORS 同步请求在 Firefox 中不起作用

Webpack 开发服务器代理路由器选项不起作用