2012-03-01 33 views
5

鑑於:客戶端JavaScript代碼(在瀏覽器中運行,使用jquery等)。目前代碼已通過Rhinoenvjs進行測試。我們想切換到node.js.但經過一番研究,找不到任何模仿瀏覽器的任何envjs式補充。用Jasmine和node.js測試客戶端JavaScript代碼

「按原樣」運行node.js時,即使缺少基本功能,如alert()window

請問有沒有什麼標準套件,請問Rhino & envjsnode.js

+0

這是軟件的一個非常不發達的一部分。讓我永遠找到一種方法,即使在Visual Studio中使用其他測試運行我的JS測試。 – Zoidberg 2012-03-01 14:00:49

回答

9

您可以使用zombie.js,它擁有測試所需的一切。或者,您可以利用jsdom(內部使用zombie.js)在node.js中獲取DOM,然後針對該DOM執行測試。

我也可以推薦testling,它根據您在所有常見瀏覽器中的規範執行測試 - 代碼在實際瀏覽器中針對您的服務運行。

這裏有一個簡單的例子與jsdom:

var jsdom = require("jsdom"); 

jsdom.env(url, ["http://code.jquery.com/jquery.min.js"], function(err, window) { 
    // jQuery is at window.$ 
}); 

代替上述url,你可以有一個HTML文檔,或片段。

您還可以加載一個頁面,並獲取任何外部資源,而不是直接提供的jQuery等,以jsdom:

var jsdom = require("jsdom").jsdom, 
    doc = jsdom(markup), 
    window = doc.createWindow(); 

// Do your stuff on window, jsdom will have fetched all the scripts referenced in the markup 

再次,zombie.js使用jsdom內部,它可能是一個更好的起點。

+0

你的測試分鐘消耗如何?我總是擔心我會跑我的測試「太多」,並消耗「太多」分鐘 – Raynos 2012-03-01 14:14:36

+0

Raynos:我其實剛剛嘗試過。我正處於啓動的邊緣,一旦業務起飛,我很確定測試將是非常值得的成本,因爲我討厭手動瀏覽器測試。 :-) – 2012-03-01 14:26:35

2

有此

  1. 您的測試瀏覽器代碼兩種選擇。在瀏覽器中運行它。模擬瀏覽器並不能證明你的代碼是有效的。
  2. 使用的工具,像phantom/zombie

當然也有替代這一點,你可以提取任何非瀏覽器相關的代碼,編寫單元測試套件對他們來說並在節點上運行它。這只是JavaScript。

您還可以使用託管服務,如testling運行瀏覽器測試你

相關問題