【问题标题】:Compare two JSON files比较两个 JSON 文件
【发布时间】:2019-11-18 11:19:45
【问题描述】:

我正在尝试比较赛普拉斯中的两个 JSON 文件。

为了看看这是否有效,我只是复制了data.json 并将其副本重命名为data2.json。

var comparejson = cy.readFile('data2.json')
cy
  .readFile('data.json')
  .then(json => JSON.stringify(json)).should('eq', JSON.parse(comparejson))

这是我得到的错误:

SyntaxError: Unexpected token o in JSON at position 1

【问题讨论】:

    标签: json compare cypress


    【解决方案1】:

    啊,可怕的token o。它从[object Object] 读取'o',这是一个普通Ol' JavaScript 对象的toString 表示。

    顺便说一句,您可以自己测试一下,方法是输入 JavaScript REPL 并:

    08:54 $ node
    Welcome to Node.js v13.0.1.
    Type ".help" for more information.
    > JSON.parse({}.toString())
    Thrown:
    SyntaxError: Unexpected token o in JSON at position 1
    > ({}).toString()
    '[object Object]'
    

    所以在未来,每当您看到该错误时,您就知道您已经跳过了在某处进行字符串化的步骤!

    这里的技巧是 readFile 返回一个对象(不是字符串,JSON 文件是 parsed by Cypress into JavaScript),但您在该对象上调用 JSON.parse。

    试试这个:

    cy
      .readFile('data2.json')
      .then(data2 => cy.readFile('data.json').should('deep.equal', data2))
    

    注意这里使用deep.equal,因为我们是在比较对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      相关资源
      最近更新 更多