chai-httpを使っていたShift-Jisで帰ってきたレスポンスを変換するのに
ハマったのでメモ
test.js
chai.use(chaiHttp);
const binaryParser = (res, cb) => {
res.setEncoding("binary");
res.data = "";
res.on("data", function (chunk) {
res.data += chunk;
});
res.on("end", function () {
cb(null, new Buffer(res.data, "binary"));
});
};
describe('test', function(){
it('API request test', (done) => {
chai.request('http://www.example.com')
.post('/api/hogehoge')
.set('Content-Type', 'application/x-www-form-urlencoded')
.send({
'hoge': 'value',
})
.buffer()
.parse(binaryParser)
.end((err, res) => {
let iconv = new Iconv('SHIFT-JIS', 'UTF-8//IGNORE');
var convertedString = iconv.convert(res.body).toString();
fs.writeFile('output.txt', convertedString, (err) => {})
done()
})
})
})
普通に書くと res
から Buffer が取得できないので
buffer
とparse
を追加しているっぽい。