使用Jest与Puppeteer:评估失败:ReferenceError:cov_4kq3tptqc未定义

vzgqcmou  于 12个月前  发布在  Jest
关注(0)|答案(3)|浏览(178)

我试图得到一个页面的描述与 puppet 师,我有一个高阶函数,提供该函数的页面对象:

export const checkDescription = async page => {
  const metaDescription = await page.$eval(
    'meta[name="description"]',
    description => description.getAttribute("content")
  );
  return metaDescription;
};

字符串
然后,我使用Jest运行一个测试。

const testDescription = await withPage(checkDescription)(URL);
expect(typeof testDescription).toBe("string");


我有以下错误:

Error: Evaluation failed: ReferenceError: cov_4kq3tptqc is not defined
      at __puppeteer_evaluation_script__:2:41
      at ExecutionContext.evaluateHandle 
      at <anonymous>
      at process._tickCallback (internal/process/next_tick.js:188:7)
    -- ASYNC --
      at ExecutionContext.<anonymous> 
      at ExecutionContext.evaluate
      at ExecutionContext.<anonymous> 
      at ElementHandle.$eval
      at <anonymous>
      at process._tickCallback (internal/process/next_tick.js:188:7)
    -- ASYNC --


如果我只是将函数粘贴到jest文件中,那么它就可以按预期工作

kupeojn6

kupeojn61#

如果你需要收集覆盖率,可以通过在浏览器上下文函数(带有.eval的行)之前添加/* istanbul ignore next */来修复,以防止伊斯坦布尔覆盖率注入。

r7knjye2

r7knjye22#

在puppeteer中,在运行测试时,伊斯坦布尔插入了以下内容:

/* istanbul ignore next */cov_4kq3tptqc.f[7]++;
                    cov_4kq3tptqc.s[19]++;

字符串
已通过将config.collectCoverage = false;添加到jest.config修复

9wbgstp7

9wbgstp73#

在evaluate函数中放置/* 伊斯坦布尔next */有效地解决了这个问题。
不起作用:

/* istanbul ignore next */
const result = await page.evaluate((el, attr) => el.getAttribute(attr), el, attr)

字符串
工作时间:

const result = await page.evaluate(/* istanbul ignore next */(el, attr) => el.getAttribute(attr), el, attr)

相关问题