Javascript 您如何归还摩卡&x27;木偶师的测试结果?

Javascript 您如何归还摩卡&x27;木偶师的测试结果?,javascript,unit-testing,mocha.js,frontend,puppeteer,Javascript,Unit Testing,Mocha.js,Frontend,Puppeteer,我想在无头浏览器中运行前端单元测试,特别是使用。因此,按照mochajs页面上的一个非常简单的示例,我正在运行一个基本单元测试,看到mocha的结果,它们在页面中按应有的方式呈现。我看到,当我在真实的浏览器中加载简单的示例时,它们也会呈现到chromium的控制台。太好了。但是,我希望通过调用此脚本返回这些结果。如何在puppeter中运行mochajs返回这些测试结果?换言之: $ node my-script-running-mocha-in-puppeteer.js Array

我想在无头浏览器中运行前端单元测试,特别是使用。因此,按照
mochajs
页面上的一个非常简单的示例,我正在运行一个基本单元测试,看到
mocha
的结果,它们在页面中按应有的方式呈现。我看到,当我在真实的浏览器中加载简单的示例时,它们也会呈现到chromium的
控制台。太好了。但是,我希望通过调用此脚本返回这些结果。如何在
puppeter
中运行
mochajs
返回这些测试结果?换言之:

$ node my-script-running-mocha-in-puppeteer.js

  Array
    #indexOf()
      ✓ should return -1 when the value is not present


  1 passing (9ms)
我的代码基本上如下所示:

const puppeteer = require('puppeteer');

 puppeteer.launch().then(async browser => {
  const page = await browser.newPage();
  await page.setContent(`
     /* 
        HTML page with mocha, unit tests and source.
     */
  `);  

  // Get page content
  const content = await page.content();

  // I see the mocha test result in the page but now I 
  // want to return them from this script.
  console.log(content);
  await browser.close();
});



正如您所说,mocha还将数据打印到控制台中,这可能是获得测试结果的最简单方法

简单方法 要简单地镜像浏览器的IO,包括记录到控制台的任何数据,您可以在启动浏览器时启用选项
dumpio

puppeter.launch({dumpio:true})
从文件中引用以下内容:

dumpio
是否将浏览器进程stdout和stderr导入
process.stdout
process.stderr
。默认值为
false

请注意,这还会将浏览器中的其他信息打印到控制台中。如果只查找控制台数据,可以使用第二个选项

仅记录对
控制台的调用。log
等。 要仅获取记录到
console.log
console.info
等的数据,您可以收听事件

page.on('console',consoleMessage=>{
log(consoleMessage.text());
如果(consoleMessage.type()='错误'){
//处理错误输出
}
});

这样,您就可以获取进入控制台的所有输出。您甚至可以使用来区分错误、警告和正常输出。

很好,谢谢,@thomas!特定于
mochajs
设置,请确保将报告器设置为
spec
,以将结果输入控制台。