比较两个JSON文件



我正在尝试比较Cypress中的两个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

啊,可怕的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文件由Cypress解析为JavaScript(,但您在对象上调用JSON.parse

试试这个:

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

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

相关内容

  • 没有找到相关文章

最新更新