Я новичок в экосистеме javascript, и я пытаюсь обдумать достойный способ провести базовое c тестирование юнита по API REST с использованием сохраненного набора приборов. , т. е. .json
файлов.
Моя точка входа устанавливает среду тестирования, подключаясь к тестовой базе данных, и выдает состояние ready
.
if (!process.env.TESTING) {
/* Connect to MongoDB */
connect(process.env.DEV_DB_HOST, process.env.DEV_DB, () => app.emit(ready));
app.on(ready, () => {
app.listen(port, () => console.log(`Listening on port ${port}!`));
});
} else {
connect(process.env.TEST_DB_HOST, process.env.TEST_DB, () => app.emit(ready));
}
export default app;
Как только соединение установлено, коллекция, воссозданная в тестовой базе данных с использованием осветителей, и тесты будут выполнены.
import Paper from '../models/paper.js';
describe('Home Page', () => {
before(async() => {
await new Promise((resolve, reject) => {
app.on(ready, () => resolve());
}).then(async() => {
try {
await Paper.collection.drop();
} catch(error) {
/* Mongo throws an exception if the collection in question does not exist */
}
await Paper.create(fixtures);
});
});
after(async() => {
await Paper.collection.drop();
});
it('Returns a list of items ordered by date in descending order', async() => {
const response = await chai.request(app).get('/');
expect(response.body).to.have.lengthOf(2);
expect(response.body).to.be.sortedBy("date", { descending: true });
});
});
Если я заменю before
и after
хуков на beforeEach
и afterEach
, так как тесты async
, возможно, что ловушка выполняется для теста и выдает коллекцию перед завершением выполнения другого теста, использующего коллекцию? Если да, каков хороший способ go заполнить тестовую базу данных осветителями для каждого тестового случая?