Описание:
У меня в моем Node-App есть тест Mocha, который должен проверить, правильно ли выполнен DB-экспорт Mongo-DB-JSON-Documents.В моем тесте я, помимо других тестов, также проверяю, не является ли каталог загрузки пустым.
Ожидаемый результат:
Тест должен ожидать загрузки и только после этого проверять, является ли каталог пустым.
Фактический результат:
Тест возвращается всегда зеленым.
Мой вопрос:
Я понял, что у нас есть обратные вызовы, но обещания лучше.Я понял, что async await - это какой-то синтаксический сахар для обещаний.И я понял, что есть даже RxJS (который я здесь не использую)
Каким-то образом мне приходится иметь дело с обратным вызовом из mogodb-backup.См. https://www.npmjs.com/package/mongodb-backup
Я не понимаю, что я делаю неправильно, поэтому тесты всегда становятся зелеными (работает параллельно с загрузкой)
mocha-test.js
describe('Database.downloadDocumentsOfType_KEYS()', function () {
it('should result in data/exportFromCosmos/KEYS/admin/ag-data/ not being empty', function () {
const config = {
documents: ['DEFAULT', 'KEYS'],
exportpathDEFAULT: 'data/exportFromCosmos/DEFAULT/',
exportpathKEYS: 'data/exportFromCosmos/KEYS/',
uploadpath: 'data/uploadToAzureBlob/',
crosscheckFile: 'data/crosscheckFile.txt'
}
async function f() {
await Database.downloadDocumentsOfType_KEYS().then(expect(dir(config.exportpathKEYS + 'admin/ag-data/')).to.not.be.empty)
}
f()
})
})
Databasemodule-to-be-test.js
const mongodbbackup = require('mongodb-backup')
const Database = {
downloadDocumentsOfType_DEFAULT: () => {
new Promise((resolve) => mongodbbackup({
uri: process.env.DB_CONNECTION_STRING_READ,
root: 'data/exportFromCosmos/DEFAULT',
parser: 'json',
callback: function(err) {
if (err) {
reject()
} else {
resolve()
}
}
)}
}