我正在使用node和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();
})
我收到以下错误提示:没有这样的文件或目录,请打开'/app/output/whatever.png'
我很难理解为什么在正常的应用程序流程中,程序在运行时会创建文件,而在测试中却没有。作为附加信息,整个过程都在Docker容器中运行
答案 0 :(得分:0)
最可能是因为在笑话测试中使用的是绝对路径,而不是相对路径。
所以不是
const screenshot = fs.readFileSync('/app/output/whatever.png');
写
const screenshot = fs.readFileSync('./app/output/whatever.png');
使用相对路径
还请记住,您的相对路径应从项目根目录开始