在使用 Mocha 进行测试之前清除集合
Clearing collection before testing with Mocha
我正在使用 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-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));
和
Subject.find({}, (subject)=>{
subject.remove({}).exec()
})
在 before 块内无济于事。我也尝试过在 before 块之外删除,以防万一。如果我 console.log(Subject.remove({}))
我得到了 Subject 对象,那么它就可以访问它,只是实际上没有对它做任何永久性的事情。
我已经做了几个小时了,还没有进一步弄清楚,所以感谢大家的帮助。
尝试像这样等待删除调用的回调
before((done) => { //Before each test, empty the database
Subject.remove({}, done);
});
由于 Mocha 和 Mognoose 都支持异步块的承诺,因此可以无缝地使用它们而不是直接调用 done
。在这种情况下,应该返回一个承诺:
before(() => Subject.remove({}));
我正在使用 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-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));
和
Subject.find({}, (subject)=>{
subject.remove({}).exec()
})
在 before 块内无济于事。我也尝试过在 before 块之外删除,以防万一。如果我 console.log(Subject.remove({}))
我得到了 Subject 对象,那么它就可以访问它,只是实际上没有对它做任何永久性的事情。
我已经做了几个小时了,还没有进一步弄清楚,所以感谢大家的帮助。
尝试像这样等待删除调用的回调
before((done) => { //Before each test, empty the database
Subject.remove({}, done);
});
由于 Mocha 和 Mognoose 都支持异步块的承诺,因此可以无缝地使用它们而不是直接调用 done
。在这种情况下,应该返回一个承诺:
before(() => Subject.remove({}));