2012-08-26 133 views
2

我開始深入研究JavaScript的一些工作,並試圖瞭解如何編寫可測試的JS代碼。我的背景主要是Java,我很舒服,但我沒有JavaScript經驗。經過一番閱讀後,我打算使用js-test-driver作爲我的單元測試框架,但我也樂於接受這裏的建議。使用Java,我的方法一直將事情分解成接受某些東西並返回某些東西的小方法...使用JavaScript,我想通過將任何DOM操作和實際邏輯分離爲兩個獨立的函數,我會採取類似的方法。例如:編寫可測試的JavaScript代碼

function sumValues(valA, valB) { 
return (valA + valB); 
} 

function displayResult(result) { 
document.getElementById('result').innerHTML = 'result'; 
} 

所以,任何業務邏輯都會很容易測試。

我在這裏的正確軌道或有沒有更好的方式來做事情?任何關於這個主題的推薦閱讀是JS特定的?感謝您的任何想法

+1

只是想知道 - 你想要做什麼'返回(valA,valB);'?在Javascript中,逗號運算符的工作方式如下:'(statement,return)',所以你基本上計算'valA'然後返回'valB'。 – jeremy

+0

對不起,我用+,錯字 – Hoofamon

+1

更新了,我沒有這樣做的經驗,但是,這對我來說是絕對正確的。你可能想要研究的東西實際上可以幫助很多人,特別是來自Java背景的東西會是功能性的範式編程(它聽起來像你已經朝這個方向發展),因爲JavaScript完全可以成爲功能性語言,並且單元測試在功能範例中是一個巨大的驅動因素,因此您可以在功能範例中查找有關單元測試的閱讀材料。 –

回答

3

將代碼分解爲邏輯單元當然仍然適用於JavaScript。至於你如何構建你的代碼並組織可重用性,有很多不同的方法可供選擇 - 這裏列舉太多,也是個人偏好問題。從原型繼承到僞古典繼承;使用框架,如backbone.jsangular.jsrequire.jsyuigoogle closure ...

關於你提到的例子,你可能會開始你的代碼分成視圖和控制器這是可測試的分別,而只有視圖操作DOM。我會查看更多backbone.js

一本真正幫助我開始使用JavaScript測試驅動開發的書(同時也學習JavaScript)是Christian Johansen的Test-Driven JavaScript Development

我正在使用JsTestDriver,它是一款優秀的軟件,絕對很好用。但在大規模使用之前,我也會評估其他產品,因爲最近JsTestDriver的開發一直很慢。Buster.JS看起來很有希望。另一個有趣的跑步者是Testem它允許您使用不同的測試框架,如MochaJasmine

我也可以推薦Sinon.JS作爲嘲笑工具包。

+0

一個構建 - 因爲Buster.JS仍處於測試階段(並且目前不在Windows上工作),現在看起來安全的JsTestDriver路由看起來很安全,因爲Buster看起來像它提供了一個JsTestDriver測試的跑步者:http://docs.busterjs.org/en/latest/extensions/buster-jstestdriver/ – quux00

+0

我目前正在試驗的另一個測試跑步者是[Testem](https://github.com/airportyh/ testem)。如果您更喜歡BDD語法,並且它似乎支持Windows,那就太好了。儘管沒有js-test-driver的兼容性..這裏有一個很好的介紹(http://net.tutsplus.com/tutorials/javascript-ajax/make-javascript-testing-fun-with-testem/)。 – meyertee

相關問題