RESTful nodejs APIのテストをテストしようとしていますが、次のエラーが発生し続けます。
_Uncaught TypeError: Cannot read property 'should' of undefined
_
私は自分のAPIにRestifyフレームワークを使用しています。
_'use strict';
const mongoose = require('mongoose');
const Customer = require('../src/models/customerSchema');
const chai = require('chai');
const chaiHttp = require('chai-http');
const server = require('../src/app');
const should = chai.should();
chai.use(chaiHttp);
describe('Customers', () => {
describe('/getCustomers', () => {
it('it should GET all the customers', (done) => {
chai.request(server)
.get('/getCustomers')
.end((err, res) => {
res.should.have.status(200);
res.body.should.be.a('array');
done();
});
});
});
});
_
res.body.should.be.a('array');
という行を削除すると、テストは正常に機能します。とにかくこの問題を解決できますか?
通常、値がundefined
またはnull
であると思われる場合は、should()
の呼び出しで値をラップします。 null
またはundefined
のプロパティを参照すると例外が発生するため、should(res.body)
。
ただし、Chaiはこれをサポートしないshould
の古いバージョンを使用しているため、事前に値の存在をアサートする必要があります。
代わりに、もう1つのアサーションを追加します。
_should.exist(res.body);
res.body.should.be.a('array');
_
Chaiはshould
の古い/古いバージョンを使用しているため、通常のshould(x).be.a('array')
は機能しません。
または、公式の should
パッケージを直接使用することもできます。
_$ npm install --save-dev should
_
そしてそれをドロップイン置換として使用します:
_const should = require('should');
should(res.body).be.a('array');
_