如何使用cypressIO等待最新的graphQL响应?
我们公司有一个使用graphQL来获取数据的应用程序。我需要测试的东西是一个包含两列(时间和状态)的网格,其中包含带有数据的单元格。我可以过滤并仅显示前一个数据。有特定的时间和状态。
我有一个测试,应该检查我们得到的响应是否具有正确的数据。问题在于大多数事情都会触发一个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仅输入最后一个请求?