【发布时间】:2013-12-09 22:15:43
【问题描述】:
我想使用 Mocha 和 PhantomJS 来做一些 BDD。
定义一些功能路径并测试它们。
简而言之,我很想运行命令phantomjs test.js 而test.js 包含如下内容:
var mocha = require("mocha"); // This one fails with "ReferenceError: Can't find variable: process"..... "/node_modules/mocha/index.js:2"
var page = require('webpage').create();
describe('Empty', function(){ // Obviously this one fails too with "ReferenceError: Can't find variable: describe"
describe('tests are', function(){
it('very nice', function(done){
page.open("http://www.phantomjs.org/", function (status) {
console.log('Loading a web page');
console.log("Page is loaded");
phantom.exit(); // Or, just call `done()`, doesn't matter right now
});
})
})
})
你能认出两者的代码片段吗?
我怎样才能做到这一点?我在某个页面上读到了可以require()“mocha.js”的浏览器版本,但它似乎不太好用。
------------------更多细节 --------------- ---------
我尝试过 CasperJS,但除了提供一些非常好的东西外,我还怀念 Mocha 吸引人的测试设计(服务器端)。
我看到的所有示例都说明了如何在网页(浏览器端)(带有脚本标签)上运行 Mocha 测试,而不是 NodeJS 测试脚本。
我不喜欢它,我想保持测试纯控制台,此外这种方法鼓励我将测试代码添加到我的网页中。
我看到一些项目试图简化这种方法,但我并不满足于此 - 似乎他们通过引入 Mocha 和 PhantomJS 已经完成了 95% 的要求,但最后 5% 仍未完成,真正将它们联系在一起的东西。
【问题讨论】:
-
找到了这个很棒的项目(github.com/alexscheelmeyer/node-phantom),但不清楚那里的事情是如何完成的。我喜欢远程控制 PhantomJS 的想法。我不确定我应该使用它,因为它似乎成为一个有限(未来)支持的小项目..
-
需要注意的是,PhantomJS 是一个无头的 webkit 浏览器(V8 运行时),而 Mocha 被设计为在 Node 运行时上运行。要求 Mocha 失败,因为
process是 Node 为脚本提供的东西(在浏览器中不可用)。
标签: javascript node.js testing phantomjs mocha.js