0

我正在使用节点和 puppeteer 加载页面,获取其内容,然后创建屏幕截图。在运行功能结束时,我有以下几行

var content = fs.writeFileSync(outputFilePath, processedContent);
var screenshot = page.screenshot({path: '../output/whatever.png', fullPage:true})
browser.close();

这在运行节点应用程序时有效。对于测试,我正在使用 JEST 并且在尝试运行检查屏幕截图的 JEST 测试时:

it('Run should take a screenshot', async() => {
    const runResult = await run();
    const screenshot = fs.readFileSync('/app/output/whatever.png');
    expect(screenshot).toBeTruthy();
})

我收到以下错误 ENOENT: no such file or directory, open '/app/output/whatever.png'

我很难理解为什么在正常的应用程序流程中程序在运行时会创建文件,但在测试中却没有。作为附加信息,整个事情在 Docker 容器中运行

4

1 回答 1

2

这很可能是因为您在开玩笑测试中使用的是绝对路径而不是相对路径。

所以而不是

const screenshot = fs.readFileSync('/app/output/whatever.png');

const screenshot = fs.readFileSync('./app/output/whatever.png');

使用相对路径

还要记住你的相对路径应该来自项目根目录

于 2019-07-19T11:26:38.090 回答