gpt4 book ai didi

javascript - 使用 Tape 和 Nightmare.js 进行 ES6 javascript 测试

转载 作者:行者123 更新时间:2023-12-03 07:34:05 25 4
gpt4 key购买 nike

我一直在尝试使用 Tape 测试我的 ES6 代码断言和Nightmare.js加载测试页。我一直在尝试不同的 ES6 方法:async/await、yield、generators,我认为我有点超出了我的能力范围。我也不确定什么时候什么时候不使用 babel-tape 。我可以通过以下测试,但是当我创建另一个评估 block 时,它会出错。文档相当稀缺(或使用 Mocha)。这里的最佳实践是什么?

import {test} from "tape";
import {default as nightmare} from "nightmare";

const page = nightmare().goto("http://localhost:4000/index.html");

page.evaluate(() => document.getElementsByTagName("body").length).end()
.then((result) => {
test("detect page body", (assert) => {
assert.equal(1, result);
assert.end();
});
});

ps。我正在使用babel-tape-runner运行测试。

最佳答案

I can get the following test to pass, but the minute I create another evaluate block it errors out.

嗯,您正在对 Nightmare 实例调用 .end()。一旦该实例结束,您就不应该与其进行交互,这可能会导致您出现一些问题。

The documentation is fairly scarce (or uses Mocha)

如果您查看 Nightmare 中的测试套件,就会发现 describe block 有一个 beforeEachafterEach,用于设置或销毁分别是 Nightmare 实例。您的测试 - 至少在我看来 - 将为您的所有测试设置一个 Nightmare 实例,这可能会导致不良行为。

<小时/>

尽管如此,您可能想尝试将 Nightmare 内部的声明和使用移至您的测试中。即兴的,类似于:

import {test} from "tape";
import {default as Nightmare} from "nightmare";

test('detect page body', (assert) => {
var nightmare = Nightmare();
nightmare
.goto("http://localhost:4000/index.html")
.evaluate(() => document.getElementsByTagName("body").length)
.then((result) => {
assert.equal(1, result);
nightmare.end(()=>{
assert.end();
});
});
});

关于javascript - 使用 Tape 和 Nightmare.js 进行 ES6 javascript 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35691806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com