2011-10-13 110 views
2

我有一個項目,我想將測試從rhino移動到nodejs(rhino只需要很長時間就可以啓動並加載envjs)。這是當前阻滯劑能夠邁出這一步之前:在節點中運行瀏覽器的javascript單元測試

ExampleSingleton = new function() { 
    var something = someFunction() {/*Does something*/} 
    $(window).bind('resize', something); 
}(); 

這抱怨沒有被定義的窗口 - 我不知道怎麼弄的「窗口」,我在shell(由#/ USR/bin/env節點)我寫的腳本(見下文,並赦免混亂,因爲我已經知道「嘗試任何事情」)。

var dom = require("jsdom").jsdom() 
var window = global.window = dom.createWindow(); 
global.jQuery = require("jQuery"); 
global.$ = global.jQuery; 
.... 
require("path/to/file"); //This is where it breaks, before the tests even start 

我嘗試閱讀和eval'ing爲好,但是這並沒有太大的幫助,當然被掩蓋的錯誤,因爲它是一個匿名函數。

我想在這裏做不可能的事嗎?還是有一個非常簡單的瀏覽器友好的事情,我可以做到這一點工作?

回答

2

您是否想過使用PhantomJS而不是節點?

PhantomJS是一款帶JavaScript API的無頭WebKit。它具有快速和支持各種Web標準的原生支持:DOM處理,CSS選擇器, JSON,Canvas和SVG。 PhantomJS是用於快速無頭測試的最佳解決方案,網站 抓取,頁面捕獲,SVG渲染器,網絡監控和許多其他使用案例。

因爲它是一個真正的瀏覽器,你將不需要jsdom或envjs。 JavaScript continuous testing with QUnit, PhantomJS and Powershell可能會幫助您開始。

+0

嗯,實際上我們最終決定去那個方向。我會給你複選框,因爲它幾乎就是我們所做的:) – Stephen

相關問題