【发布时间】:2018-09-05 06:59:18
【问题描述】:
我正在尝试异步运行我的所有单元测试,但是调用一个函数来使用一些虚拟数据填充数据库会干扰同时运行并使用相同数据的其他单元测试。
collectionSeed.js 文件:
const {ObjectID} = require('mongodb');
import { CollectionModel } from "../../models/collection";
const collectionOneId = new ObjectID();
const collectionTwoId = new ObjectID();
const collections = [{
_id: collectionOneId
}, {
_id: collectionTwoId
}];
const populateCollections = (done) => {
CollectionModel.remove({}).then(() => {
var collectionOne = new CollectionModel(collections[0]);
collectionOne.save(() =>{
var collectionTwo = new CollectionModel(collections[1]);
collectionTwo.save(() => {
done();
});
});
});
};
unitTest1 文件:
beforeEach(populateCollections);
it('Should run', (done) => {
//do something with collection[0]
})
unitTest2 文件:
beforeEach(populateCollections);
it('Should run', (done) => {
//do something with collection[0]
})
我正在运行更改、删除和添加数据到数据库的单元测试,因此最好使用beforeEach 以保持所有数据一致,但CollectionModel.remove({}) 函数通常在it 之间运行来自一个文件的函数和另一个单元测试文件中的第二个 it 函数,因此一个单元测试工作正常,而第二个 it 正在尝试使用不存在的数据。
有没有办法防止不同的单元测试文件相互干扰?
【问题讨论】:
标签: node.js mongodb unit-testing mocha.js