Node.js 在使用摩卡进行测试之前清除收集
我正在使用Mocha、Chai和Mongoose为Node.js应用程序编写单元测试。如果集合为空(如所需),测试本身就可以工作,但在测试之前清除集合时遇到问题Node.js 在使用摩卡进行测试之前清除收集,node.js,unit-testing,mongoose,mocha.js,chai,Node.js,Unit Testing,Mongoose,Mocha.js,Chai,我正在使用Mocha、Chai和Mongoose为Node.js应用程序编写单元测试。如果集合为空(如所需),测试本身就可以工作,但在测试之前清除集合时遇到问题 let mongoose = require("mongoose"); let Subject = require('../Subject/subject'); //Require the dev-dependencies let chai = require('chai'); let chaiHttp = require('chai
let mongoose = require("mongoose");
let Subject = require('../Subject/subject');
//Require the dev-dependencies
let chai = require('chai');
let chaiHttp = require('chai-http');
// let server = require('../server');
let server = "http://localhost:3000"
let should = chai.should();
chai.use(chaiHttp);
describe('subjects', () => {
before((done) => { //Before each test, empty the database
Subject.remove({})
done();
});
describe('/GET subject', () => {
// working test
});
describe('/POST subject', () => {
// working test
});
describe('/GET subject', () => {
// working test
});
});
我也尝试过不同的方法
Subject.deleteMany({}, (err) => console.log(err));
及
在前一个街区内没有用。我也尝试过在before块之外移除,以防万一。如果我console.log(Subject.remove({}))
我得到了Subject对象,这样它就能够访问它,只是实际上没有对它做任何永久性的操作
我已经做了几个小时了,现在还没有弄清楚,所以非常感谢所有的帮助。尝试像这样等待删除呼叫的回调
before((done) => { //Before each test, empty the database
Subject.remove({}, done);
});
由于Mocha和Mognose都支持异步块,因此可以无缝地使用它们,而不是直接调用
done
。在这种情况下,应返还承诺:
before(() => Subject.remove({}));
尝试此操作会导致超时错误。我最初遇到这个问题是因为一个错误放置的done()调用。可以理解为什么错误放置的
done
会导致问题,但是remove
在没有回调的情况下返回表,它应该可以工作。摩卡咖啡就是这样做的。在这种情况下,不应执行
。Subject.remove({}).exec()
可能可以工作,但我希望它在没有exec
的情况下也能工作。
before(() => Subject.remove({}));