1

JavaScript 新手,试图了解如何运行以下简单测试,该测试会加载 google 主页并获取标题。然后测试这个标题。

const puppeteer = require("puppeteer");
var page_title = "blank";
assert = require("assert");

async function run() {
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();
  await page.goto("http://www.google.co.uk");
  page_title = await page.title();
  console.log("Page Title: ", page_title)
  await browser.close();
}

run();

describe("Google", function() {
  it("Title contains Google", async function() {
    assert.equal(page_title, "Google");
  });
});

问题是 describe/it 块在获取 page_title 之前运行。请有人建议我应该如何实际构建这个?

4

1 回答 1

0

您只需要阅读 mocha文档。无需深入挖掘位于TOC上的异步代码

摩卡提供3种方式:

  • 打回来

    只需在测试完成时调用回调。通过向 it() 添加一个回调(通常命名为done)。

  • 承诺
  • asyncawait

async所以它用and修改成这样await

const puppeteer = require("puppeteer");
var page_title = "blank";
assert = require("assert");

describe("Google", function() {
    // this.timeout(0);
  it("Title contains Google", async ()=> {
        const browser = await puppeteer.launch();  //headless by default
        const page = await browser.newPage();
        await page.goto("http://www.google.co.uk");
        page_title = await page.title();
        console.log("Page Title: ", page_title);
        assert.equal(page_title, "Google");
        await browser.close()
  });
});

我的建议是快速阅读关于TOC的所有解释,并阅读async 和 await 的简要解释

于 2017-10-16T19:38:12.453 回答