我在Node-App中进行了Mocha测试,该测试应该测试Mongo-DB-JSON-Documents的DB-Export是否正确完成。 在我的测试中,除了其他测试,我还测试下载目录是否为空。
测试应等待下载,然后检查目录是否为空。
测试始终返回绿色。
我知道我们有回调,但是诺言更好。 我知道异步等待是对诺言的一种语法糖。 而且我知道甚至还有RxJS(在此不使用)
我必须以某种方式处理来自mogodb-backup的回调。 参见https://www.npmjs.com/package/mongodb-backup
我不明白自己在做什么错,以便测试始终变为绿色(与下载并行运行)
call_http() {
this.http.get<any>('/api/goes/here').pipe(
map(res => this.result = res),
catchError(err => do something with err)
).subscribe();
}
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()
})
})
答案 0 :(得分:3)
async function f() {
await Database.downloadDocumentsOfType_KEYS().then(e)
}
f()
这将立即触发异步功能,并且
it('...', function (){})
立即完成。
因此您需要使用
describe('...',async function(){
it('...',async function(){
const f = async function(){
await Database.downloadDocumentsOfType_KEYS();
expect(dir(config.exportpathKEYS + 'admin/ag-data/')).to.not.be.empty);
};
await f();
});
});
也是
new Promise((resolve) => mongodbbackup({...
应该是
new Promise((resolve,reject) => mongodbbackup({
否则,拒绝是undefined