簡単なテスト (mocha と should) を設定し、保存したレポートが取得したレポートと同じであることをテストしています。私は deep.equal を使用したいと思いますが、_id が等しくないため、行き詰まります。
var report = new Report();
describe('GET:id /api/reports', function () {
beforeEach(function (done) {
report.save(function (err, result) {
if (err) return (done(err));
result._id.should.eql(report._id);
done();
});
});
afterEach(function (done) {
Report.remove().exec().then(function () {
done();
});
});
before(function (done) {
Report.remove().exec().then(function () {
done();
});
});
it('should respond with the same report saved', function (done) {
request(app)
.get('/api/reports/' + report._id)
.expect(200)
.expect('Content-Type', /json/)
.end(function (err, res) {
if (err) return done(err);
console.log(JSON.stringify(res.body));
console.log(JSON.stringify(report));
res.body._id.should.equal(report._id);
done();
});
});
});
私が得る出力は
{"_id":"55282d42cb39c43c0e4421e1","__v":0}
{"__v":0,"_id":"55282d42cb39c43c0e4421e1"}
1) GET:id /api/reports should respond with the same report saved:
Uncaught AssertionError: expected '55282d42cb39c43c0e4421e1' to be 55282d42cb39c43c0e4421e1
代わりに == を使用すると、正常に動作します
(res.body._id == report._id).should.equal(true);
私が最終的に望んでいたのは、res.body(またはそのことについては他の何か)が最初のレポートと完全に一致することでした。