ES6 javascript 使用 Tape 和 Nightmare.js 进行测试
ES6 javascript tests using Tape and Nightmare.js
我一直在尝试使用 Tape assertions and Nightmare.js to load a test page. I keep trying different ES6 methods: async/await, yield, generators, and I think I'm a bit over my head. I'm also not sure when and when to not use babel-tape 测试我的 ES6 代码。我可以让下面的测试通过,但是当我创建另一个评估块时它出错了。文档相当稀缺(或使用 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
块有一个 beforeEach
和 afterEach
分别用于设置或销毁 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();
});
});
});
我一直在尝试使用 Tape assertions and Nightmare.js to load a test page. I keep trying different ES6 methods: async/await, yield, generators, and I think I'm a bit over my head. I'm also not sure when and when to not use babel-tape 测试我的 ES6 代码。我可以让下面的测试通过,但是当我创建另一个评估块时它出错了。文档相当稀缺(或使用 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
块有一个 beforeEach
和 afterEach
分别用于设置或销毁 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();
});
});
});