鑑於:客戶端JavaScript代碼(在瀏覽器中運行,使用jquery等)。目前代碼已通過Rhino
和envjs
進行測試。我們想切換到node.js.但經過一番研究,找不到任何模仿瀏覽器的任何envjs
式補充。用Jasmine和node.js測試客戶端JavaScript代碼
「按原樣」運行node.js
時,即使缺少基本功能,如alert()
或window
。
請問有沒有什麼標準套件,請問Rhino & envjs
的node.js
?
鑑於:客戶端JavaScript代碼(在瀏覽器中運行,使用jquery等)。目前代碼已通過Rhino
和envjs
進行測試。我們想切換到node.js.但經過一番研究,找不到任何模仿瀏覽器的任何envjs
式補充。用Jasmine和node.js測試客戶端JavaScript代碼
「按原樣」運行node.js
時,即使缺少基本功能,如alert()
或window
。
請問有沒有什麼標準套件,請問Rhino & envjs
的node.js
?
您可以使用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內部,它可能是一個更好的起點。
你的測試分鐘消耗如何?我總是擔心我會跑我的測試「太多」,並消耗「太多」分鐘 – Raynos 2012-03-01 14:14:36
Raynos:我其實剛剛嘗試過。我正處於啓動的邊緣,一旦業務起飛,我很確定測試將是非常值得的成本,因爲我討厭手動瀏覽器測試。 :-) – 2012-03-01 14:26:35
這是軟件的一個非常不發達的一部分。讓我永遠找到一種方法,即使在Visual Studio中使用其他測試運行我的JS測試。 – Zoidberg 2012-03-01 14:00:49