使用 nightwatch 和 mocha runner 进行异步测试
Async test with nightwatch and mocha runner
我正在尝试使用 nightwatch.js 和 mocha runner 定义一些测试。我想测试我的 javascript 库如何在不同的浏览器上工作。
我的代码相当简单,看起来像那样
const expect = require('chai').expect;
describe('InfinitiSpec', function() {
beforeEach((client, done) => {
client.url(`file://${__dirname}/../../dist/index.html`);
done();
});
after((client, done) => {
client.end(() => done());
});
it('should be five', (client) => {
client.execute(function() {
// test javascript here
}, [], () => {
expect(2 + 2).to.equal(5)
});
});
});
我遇到的问题是 nightwatch 没有将 done
回调传递给测试,因此即使在单个测试断言失败的情况下,测试本身看起来仍然是成功的。
vladmiller:infiniti-tracking-evolution vladmiller$ nightwatch
InfinitiSpec
✖ AssertionError: expected 4 to equal 5
at Object.<anonymous> (/Users/vladmiller/Projects/xxx/xxx/test/browser/infiniti.spec.js:18:24)
at HttpRequest.<anonymous> (/usr/local/lib/node_modules/nightwatch/lib/index.js:322:20)
at emitTwo (events.js:87:13)
at HttpRequest.emit (events.js:172:7)
at HttpRequest.<anonymous> (/usr/local/lib/node_modules/nightwatch/lib/index.js:351:15)
at emitThree (events.js:97:13)
at HttpRequest.emit (events.js:175:7)
at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/nightwatch/lib/http/request.js:155:16)
at emitNone (events.js:72:20)
at IncomingMessage.emit (events.js:166:7)
✓ should be five (3322ms)
1 passing (3s)
如何使用 nightwatch + mocha + chai 测试异步 javascript?也许有人可以推荐更好的堆栈来测试 selenium 中的 JS?
谢谢
Nightwatch 使用不支持异步测试的修补版 mocha。解决方案是改用标准 mocha,但相关文档 (http://nightwatchjs.org/guide#using-the-standard-mocha) 不完整,您将无法访问该上下文中的页面对象。
在花了一个小时尝试使用标准 mocha 设置 Nightwatch 之后,我决定回到普通的 Selenium Webdriver。老实说,我不后悔。
如果您需要有关如何仅使用 Selenium 制作类似 Nightwatch 的页面对象的建议,请查看 http://marmelab.com/blog/2016/04/19/e2e-testing-with-node-and-es6.html
我正在尝试使用 nightwatch.js 和 mocha runner 定义一些测试。我想测试我的 javascript 库如何在不同的浏览器上工作。
我的代码相当简单,看起来像那样
const expect = require('chai').expect;
describe('InfinitiSpec', function() {
beforeEach((client, done) => {
client.url(`file://${__dirname}/../../dist/index.html`);
done();
});
after((client, done) => {
client.end(() => done());
});
it('should be five', (client) => {
client.execute(function() {
// test javascript here
}, [], () => {
expect(2 + 2).to.equal(5)
});
});
});
我遇到的问题是 nightwatch 没有将 done
回调传递给测试,因此即使在单个测试断言失败的情况下,测试本身看起来仍然是成功的。
vladmiller:infiniti-tracking-evolution vladmiller$ nightwatch
InfinitiSpec
✖ AssertionError: expected 4 to equal 5
at Object.<anonymous> (/Users/vladmiller/Projects/xxx/xxx/test/browser/infiniti.spec.js:18:24)
at HttpRequest.<anonymous> (/usr/local/lib/node_modules/nightwatch/lib/index.js:322:20)
at emitTwo (events.js:87:13)
at HttpRequest.emit (events.js:172:7)
at HttpRequest.<anonymous> (/usr/local/lib/node_modules/nightwatch/lib/index.js:351:15)
at emitThree (events.js:97:13)
at HttpRequest.emit (events.js:175:7)
at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/nightwatch/lib/http/request.js:155:16)
at emitNone (events.js:72:20)
at IncomingMessage.emit (events.js:166:7)
✓ should be five (3322ms)
1 passing (3s)
如何使用 nightwatch + mocha + chai 测试异步 javascript?也许有人可以推荐更好的堆栈来测试 selenium 中的 JS? 谢谢
Nightwatch 使用不支持异步测试的修补版 mocha。解决方案是改用标准 mocha,但相关文档 (http://nightwatchjs.org/guide#using-the-standard-mocha) 不完整,您将无法访问该上下文中的页面对象。
在花了一个小时尝试使用标准 mocha 设置 Nightwatch 之后,我决定回到普通的 Selenium Webdriver。老实说,我不后悔。
如果您需要有关如何仅使用 Selenium 制作类似 Nightwatch 的页面对象的建议,请查看 http://marmelab.com/blog/2016/04/19/e2e-testing-with-node-and-es6.html