我正在尝试测试我的API的REST功能,但PUT测试似乎从未起作用。每次在mocha中运行测试时,我都会收到以下错误:
"Uncaught assertion error: expected [] to equal {objectData}"
其中objectData
是我尝试发布的对象(名为couponTwo
)的JSON表示。
我觉得问题可能出在beforeEach
函数中,因为它在每个测试之前清除数据库,这需要为许多其他测试正确运行而完成。以下是测试代码:
var config = require('../config/config');
var mongoose = require('mongoose');
var should = require('should');
var request = require('supertest');
var Coupon = require('../models/coupon');
var url = require('../config/config').test.url;
process.env.NODE_ENV = 'test';
beforeEach(function (done) {
function clearCollections() {
for (var collection in mongoose.connection.collections) {
mongoose.connection.collections[collection].remove(function() {});
}
return done();
}
if (mongoose.connection.readyState === 0) {
mongoose.connect(config.test.db, function (err) {
if (err) throw err;
return clearCollections();
});
} else {
return clearCollections();
}
});
afterEach(function (done) {
mongoose.disconnect();
return done();
});
这里是一个用于测试在执行PUT操作后数据库中是否存在某个对象的代码:
describe('#post', function () {
it('should return a coupon object after post', function (done) {
request(url).post('/coupons')
.set('Content-Type', 'application/json')
.send(couponTwo)
request(url).get('/coupons').end(function (err, res) {
if (err) throw err;
console.log(res.body);
res.body.should.eql(couponTwo);
done();
})
})
})