【发布时间】:2017-02-16 03:08:06
【问题描述】:
我正在使用“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")”,则测试用例通过。 谁能告诉我为什么? “数据”的类型是什么?
【问题讨论】: