我一直在搜索這個站點和web一段時間,我無法找到解決這個問題的方法。我正在嘗試測試API的REST函數,但PUT測試似乎從未奏效。每次測試運行摩卡時,我都會收到錯誤「Uncaught assertion error:expected [] to equal {objectData}」,其中objectData是我嘗試發佈的對象(名爲couponTwo)的json表示形式。在Mocha中使用Supertest來測試Node.js Express API和MongoDB
我有一種感覺,問題在於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();
})
})
})
我很抱歉,如果這個問題的答案是顯而易見的,我錯過了一些基本的東西,但我遇到了障礙。謝謝你的幫助!