Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在JS中测试嵌套等待函数_Javascript_Unit Testing_Jestjs - Fatal编程技术网

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()
})