我已经在这个网站和网络上搜索了一段时间,但我找不到解决这个问题的方法。我正在尝试测试我的 API 的 REST 功能,但 PUT 测试似乎从来没有工作过。每次在 mocha 中运行测试时,我都会收到错误“未捕获的断言错误:预期 [] 等于 {objectData}”,其中 objectData 是我尝试发布的对象的 json 表示形式(名为 couponTwo)。
我感觉问题出在 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();
})
})
})
如果这个问题的答案很明显并且我错过了一些基本的东西,我深表歉意,但我遇到了障碍。谢谢你的帮助!