如何用chai断言从promise返回的json

how to assert json returned from promise with chai?

本文关键字:返回 json promise 何用 chai 断言      更新时间:2023-09-26

我正试图为从承诺返回的json编写测试。我创建了这个简单的代码,以便您可以尝试复制:

"use strict";
var chai = require("chai");
chai.should();
var chaiAsPromised = require("chai-as-promised");
var chaiJsonEqual = require('chai-json-equal');
chai.use(chaiAsPromised);
chai.use(chaiJsonEqual);
var expect = chai.expect;
describe('should', function() {
  it('return true because its the same json object', function() {
    var json = {  "foo": "bar" };
    return expect(Promise.resolve(json)).to.eventually.jsonEqual(json);
  });
});

但是我得到:

  1) should return true because its the same json object:
     AssertionError: expected {} to have the same json representation as { foo: 'bar' }

chai-as-promise和chai-json-equal分别起作用,但不能一起起作用。你们有解决这个问题的方法吗,变通的方法或者其他我可以使用的库?

chai-json-equal已经一年没有更新了,所以我怀疑有人会回应这个问题。

特别是当有更简单的解决方案时。

代替:

return expect(Promise.resolve(json)).to.eventually.jsonEqual(json);

写:

return expect(Promise.resolve(json)).to.eventually.deep.equal(json);

测试通过。