摩卡使用chai测试对象的平等并不像预期的那样工作

时间:2017-02-16 03:08:07

标签: node.js mocha chai

我正在使用“chai”测试https的响应数据,数据如下:

let req = https.request(options, (res) => {
    res.on('data', (data) => {
        return callback(null, data);
    });
});

测试代码如下:

let chai = require("chai");
let expect = chai.expect;
console.log("data=" + data);
console.log("typeof data = " + typeof(data));//object
console.log("util.isObject(data) = " + util.isObject(data));//true
console.log("util.isString(data) = " + util.isString(data));//false
        // assert.isObject(data, "object");
expect(JSON.stringify(data)).to.be.an("string");//ok
expect(JSON.parse(data)).to.be.an("object");//ok
expect(data).to.be.an("object");//error

Mocha测试失败了“expect(data).to.be.an(”object“);”,记录如下:

data={"data":{"isDulp":false,"bindTb":false},"req_id":"REQ_APP-1487212987084_2851"}
typeof data = object
util.isObject(data) = true
util.isString(data) = false

Uncaught AssertionError: expected <Buffer 7b 22 64 61 74 61 22 3a 7b 22 69 73 44 75 6c 70 22 3a 66 61 6c 73 65 2c 22 62 69 6e 64 54 62 22 3a 66 61 6c 73 65 7d 2c 22 72 65 71 5f 69 64 22 3a 22 ... > to be an object

我认为'data'是一个对象,当我使用typeof来测试它时,它会打印“object”,但是当我使用chai“expect(data).to.be.an(”object“)”时测试用例失败。 如果我使用“expect(JSON.parse(data))。to.be.an(”object“)”,则测试用例通过。 有谁能告诉我为什么?什么类型的'数据'?

1 个答案:

答案 0 :(得分:0)

expected缓冲区结果显示您的端点返回缓冲区而不是对象,断言String起作用,因为它是一个字符串。我猜它失败的原因是数据不是一个对象而是一个缓冲区。