首页 > 解决方案 > 异步函数测试抛出 regeneratorRuntime 错误

问题描述

我正在尝试为异步函数编写测试。

基于在线建议和文档:https ://jestjs.io/docs/asynchronous

我已经尝试了以下所有测试变体。所有测试都出现以下错误。

ReferenceError:未定义 regeneratorRuntime

我从来没有在实际的异步函数中遇到断点。
如果我将此函数设为非异步(仅用于验证测试),则能够很好地编写测试。
我能否得到一些关于我做错了什么的指导。

异步调用是由于调用了这个 cookieStore。

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies/CookieStore
需要它,因为我需要 cookie 的到期值。

这是我正在测试的异步功能。

const checkData = async () => {

  const cookie = await cookieStore.get('sample');
  const {expires} = { ...cookie };

  // other logic here which may result in returning a false;

  return true;
}

这些是每个测试都抛出相同的上述错误的测试。

describe('do Test', () => {

  it('should be false when session data exists', async () => {
    const result = checkData();
    expect(result).toBe(true);
  });

  it('should be false when session data exists', async () => {
    const result = checkData();
    return expect(result).toBe(true);
  });

  it('the data is peanut butter', done => {
    const callback = data => {
        expect(data).toBe(true);
        done();
    };

    checkData(callback);
  });

  it('the data is peanut butter1', () => {
    return checkData().then(data => {
      expect(data).toBe(true);
    });
  });

  it('the data is peanut butter2', () => {
    return expect(checkData()).resolves.toBe(true);
  });

  it('the data is peanut butter3', async () => {
    const data = await checkData();
    expect(data).toBe(true);
  });

  it('the data is peanut butter4', async () => {
    await expect(checkData()).resolves.toBe(true);
  });
});

标签: javascriptjestjs

解决方案


推荐阅读