Javascript 从幻影中运行摩卡

Javascript 从幻影中运行摩卡,javascript,node.js,testing,phantomjs,mocha.js,Javascript,Node.js,Testing,Phantomjs,Mocha.js,我只想用摩卡咖啡和幻影做一些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').cre

我只想用摩卡咖啡和幻影做一些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吸引人的测试设计(服务器端

我看到的所有示例都解释了如何在网页(浏览器端)(带有脚本标记)而不是NodeJS测试脚本上运行Mocha测试。
我不喜欢它,我想让测试保持纯粹的控制台,此外,这种方法鼓励我将测试代码添加到我的网页中


我见过一些项目试图简化这种方法,但我并不满意——看起来他们通过带来Mocha和PhantomJS完成了95%的需求,但最后5%的需求仍然没有完成,这是真正将其连接在一起的东西。

您可能希望在
节点
上下文(
Node test.js
)中运行测试,但是使用类似于库的东西从节点控制phantomJS

TJ Holowaychuk在他的所有库中都做了这样的事情(我个人不理解),但PhantomJS可能不支持流程变量


您可以通过将
window.process
window.process.env
设置为空对象来欺骗Mocha,不过我猜您稍后会遇到更多的PhantomJS/Node问题。

通过桥接器从Node运行PhantomJS可能不是最佳选择

有一个模块(我从中派生)使phantomjs环境更像节点环境——它向phantomjs添加了流程、事件等模块

有一个框架正好实现了这一点,尽管有老幻影和老摩卡


在phantom 2.0中运行摩卡测试似乎是可能的。

发现了这个很棒的项目(),但不清楚那里是如何完成的。。我喜欢远程控制幻影的想法。。不确定我是否应该使用它,因为它似乎是一个支持有限(未来)的小项目。需要注意的是,PhantomJS是一个无头webkit浏览器(V8运行时),而Mocha设计为在节点运行时上运行。要求Mocha失败是因为Node为脚本提供了
process
(在浏览器中不可用)。process.env.COV只是他使用环境变量在代码和插入指令的代码之间切换以实现代码覆盖率(可能使用他自己的jscoverage工具)。这个“幻影”库似乎就是我要找的,我一编译它就会测试它:~(Windows)。。将带着答案返回!谢谢,现在似乎有两个选项可以使用:
phantom
node phantom
。。这些是NPM的确切名称,供其他人将来参考。谢谢你,迈克尔!:)