等待最新的graphQL响应

时间:2019-10-16 11:16:54

标签: javascript graphql cypress

如何使用cypressIO等待最新的graphQL响应?

我们公司有一个使用graphQL来获取数据的应用程序。我需要测试的东西是一个包含两列(时间和状态)的网格,其中包含带有数据的单元格。我可以过滤并仅显示前一个数据。有特定的时间和状态。

Example of what it could look like

我有一个测试,应该检查我们得到的响应是否具有正确的数据。问题在于大多数事情都会触发一个graphQL请求,但是它仅显示来自最新图形请求的响应。

由于所有请求基本相同,只是变量有所变化。

这是我的测试代码的样子。

cy.server();
  cy.route({
    method: 'POST',
    url: 'http://localhost:3000/'
  }).as('graphQLRequest');

cy.setTime(10); //Triggers request
cy.setStatus(ok); //Triggers requests

cy.wait('@graphQLRequest').then((xhr) => {
    xhr.response.body.data.forEach((row) => {
      expect(row.time).to.be.least(10).and.most(10);
      expect(row.status).to.equal(ok);
    });

问题在于,由于来自cy.setTime的请求将在来自cy.setStatus的请求之前完成,因此期望将查找第一个触发的请求,这会使期望(row.status).to.equal(ok)失败因为尚未在该响应中对其进行过滤。

Soo,我如何确保cy.wait仅输入最后一个请求?

0 个答案:

没有答案