2013-12-09 65 views
2

我想使用摩卡和PhantomJS做一些BDD。
定義一些功能路徑並測試它們。從phantomjs運行摩卡

總之,我喜歡運行的命令phantomjs test.jstest.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和PhantomJS完成了95%的要求,但最後的5%仍然是撤消,真正將它們連接在一起的東西。

+0

發現這個很棒的項目(https://github.com/alexscheelmeyer/node-phantom),但目前還不清楚如何在那裏做的事情..我喜歡遠程控制PhantomJS的想法..不知道我應該使用它,因爲它似乎是一個有限(未來)支持的小項目。 – Poni

+0

需要注意的是,PhantomJS是一個無頭webkit瀏覽器(V8運行時),並且Mocha被設計爲在節點運行時運行。由於'process'是Node爲腳本提供的某些內容(瀏覽器不可用),因此需要摩卡失敗。 –

回答

3

您可能想要仍在Node上下文中運行測試(node test.js),但是會從類似node-phantom庫的節點控制幻像JS。

TJ Holowaychuk在他的所有庫中都有這樣的事情,這是process.env.COV check(我個人不明白),但PhantomJS可能不支持流程變量。

你也許可以通過設置window.processwindow.process.env來清空對象來欺騙Mocha,不過我猜你以後會碰到更多的PhantomJS/Node問題。

+1

process.env.COV只是他使用環境變量在代碼和代碼COVerage的檢測代碼之間切換(可能使用他自己的jscoverage工具)。 – iandotkelly

+0

這個「幻像」庫似乎是我正在尋找的東西,只要我編譯它就會對它進行測試:〜(Windows)..將回復到答案/ s!謝謝 – Poni

+1

好吧,現在看起來有兩個選項可以工作:'phantom'和'node-phantom' ..這些都是確切的NPM名稱,供將來爲其他人蔘考。謝謝邁克爾! :) – Poni

0

通過節點橋接運行phantomjs可能不是最佳選擇。

phantomjs-nodeify模塊(我從http://github.com/jgonera分叉出來)使得phantomjs環境更像節點環境 - 它將模塊進程,事件等添加到phantomjs中。

webspecter框架,實現了完全的,舊的幻影和舊摩卡雖然。

似乎可以讓虛擬測試運行在虛擬2.0中。

相關問題