Javascript 如何在JS中测试嵌套等待函数
这是我问过的一个问题的答案,我想知道如何测试这种嵌套的等待函数 普通趣味的单元测试Javascript 如何在JS中测试嵌套等待函数,javascript,unit-testing,jestjs,Javascript,Unit Testing,Jestjs,这是我问过的一个问题的答案,我想知道如何测试这种嵌套的等待函数 普通趣味的单元测试 const test = async (url, id) => { if (!isValidUrl(url)) { throw new Error('Invalid URL') } const storage = new Storage(Indexdb, id); const cae = new valueExtract(url); const data = await cae.
const test = async (url, id) => {
if (!isValidUrl(url)) {
throw new Error('Invalid URL')
}
const storage = new Storage(Indexdb, id);
const cae = new valueExtract(url);
const data = await cae.fetch();
const obj = await new ZIPExtractor(data); // shudder. A constructor should never return a promise
const zip = await obj.getZip();
const list = await zip.getList();
const sI = storage.connection;
await Promise.all(Object.keys(list).map(async (fileName, index) => {
const blob = await new FileExtractor(list[fileName]);
const store = new StoreObject(fileName, 'testData', blob);
await sI.setItemForce(fileName, store.dataObject);
}));
return sI; // or something?
}
您知道如何对不使用wait的
函数进行单元测试吗?请告诉我们你是怎么做的@BergiDid你读过吗?我读过,但问题出在这里。我们正在与许多其他方案进行交互,而我无法模拟它们,正确地使用url,但这不是它应该的。如果您无法模拟依赖项,那么您已经从单元测试方案转移到功能/集成测试方案,您将需要使用不同的工具。或者,这意味着您需要对代码进行一些实质性的重构。
test('Tes scenario', () => {
let storage = new StorageAdapter(
type,
dbName
)
expect(storage.storageName).toBe(dbName)
expect(storage.storageType).toEqual(type)
expect(storage.connection).not.toBeNull()
})