赛普拉斯:如何将下载文件中的 json 与 graphql(数据库)查询进行比较?

Cypress: how can I compare the json in a downloaded file to a graphql(database) query?

对于测试,我需要能够将下载的 json 文件中的值与来自 graphql 查询的值进行比较。这将使我能够验证下载文件中的值是否正确。

到目前为止,我已经能够从 json 文件中检索数据并进行数据库调用,并且在控制台登录时两者都可见且匹配,如下所示:

但是,当我比较它们并将值更改为不正确的断言时,断言似乎仍然通过。检查代码如下:

 const downloadsFolder = Cypress.config('downloadsFolder');
    cy.readFile(path.join(downloadsFolder, 'test.json'), { timeout: 30000 })
      .should('exist')
      .then((data) => {
        cy.graphQlQuery(url, getUserReport())
          .then((response: any) => {
            console.log(response);
            console.log(data);
            expect(response.status).to.eq(200);
            expect(data.length === response.body.data.workforce_roles.length);
            expect(JSON.stringify(data[0]) === JSON.stringify(response.body.data.workforce_roles));
            debugger;
          });

      });

任何人都可以告诉我这段代码有什么问题以及如何修复它以便在这些值不匹配时我正确地收到错误消息。我怀疑这与赛普拉斯在继续之前没有等待检查完成这一事实有关,但我不确定如何纠正给定赛普拉斯与 async/await.

的麻烦关系

您需要符合最后两个要求。赛普拉斯无法按原样识别它们

expect(data.length === response.body.data.workforce_roles.length).to.eq(true)
//or
expect(data.length).to.eq(response.body.data.workforce_roles.length)
expect(JSON.stringify(data[0]) === JSON.stringify(response.body.data.workforce_roles)).to.eq(true)
//or
expect(data[0]).to.deep.eq(response.body.data.workforce_roles)