首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嘲笑如何测试异步加载脚本

嘲笑如何测试异步加载脚本
EN

Stack Overflow用户
提问于 2019-07-16 15:26:42
回答 1查看 1.4K关注 0票数 7

我有一个用于异步加载脚本的工具,在异步测试中使用jest,但jest已经超时,无法响应脚本。如何实现此功能?

我试着按照文档的承诺写一个测试样本。

这是我的脚本加载程序代码和Jest测试代码。

代码语言:javascript
复制
function mapLoader(key, version, url) {
  return new Promise((resolve, reject) => {
    if (AMap) {
      return resolve(AMap);
    }

    if (!url && (!key || !version)) {
      warn('The parameter is incorrect and must contain the url attribute or the key and version attributes.');
    }

    const aMapUrl = url || `${defaultPath}?v=${version}&key=${key}`;

    const jsApi = document.createElement('script');
    jsApi.charset = 'utf-8';
    jsApi.src = aMapUrl;
    jsApi.onerror = reject;
    jsApi.onload = () => {
      if (window.AMap) {
        AMap = window.AMap;
        // 如果不加上 setTimeout 在本地开发时,会有一定几率导致刷新页面覆盖物无法显示在地图上。
        setTimeout(() => {
          resolve(AMap);
        }, 0);
      } else {
        warn('AMap SDK Load Failure.');
      }
    };

    document.head.appendChild(jsApi);
  });
}
代码语言:javascript
复制
test('test mapLoader function', () => {
  return mapLoader('d2d76e2274bf5973ecfb1f68454b6f3b', '1.4.15').then(AMap => {
    expect(AMap).toBe('peanut butter');
  });
});

Timeout -异步回调在jest.setTimeout.Error指定的5000 by超时内没有被调用:

EN

回答 1

Stack Overflow用户

发布于 2022-02-01 22:07:24

你必须像这样测试:

代码语言:javascript
复制
test('test mapLoader function', (done) => {
  return mapLoader('d2d76e2274bf5973ecfb1f68454b6f3b', '1.4.15')
    .then(AMap => {
      expect(AMap).toBe('peanut butter');
      done();
    });
});

甚至让Jest等待而不执行其他测试,直到用async关键字完成为止:

代码语言:javascript
复制
test('test mapLoader function', async (done) => {
  return mapLoader('d2d76e2274bf5973ecfb1f68454b6f3b', '1.4.15')
    .then(AMap => {
      expect(AMap).toBe('peanut butter');
      done();
    });
});

如果您想告诉Jest,测试应该失败,在这种情况下,您将调用done(error)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57060711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档