开玩笑如何测试异步加载脚本

时间:2019-07-16 15:26:42

标签: jestjs

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

我试图根据文档的承诺编写测试样本

这是我的脚本加载器代码和Jest测试代码

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

test('test mapLoader function', () => {
    return mapLoader('d2d76e2274bf5973ecfb1f68454b6f3b', '1.4.15').then(
      AMap => {
        expect(AMap).toBe('peanut butter')
      }
    )
  })

超时-在jest.setTimeout.Error指定的5000ms超时内未调用异步回调:

0 个答案:

没有答案