轉帖|其它|編輯:郝浩|2011-06-10 14:55:28.000|閱讀 412 次
概述:進行JavaScript重構時,我希望引入易于使用的測試框架來保證重構的順利進行,未來能持續(xù)通過測試代碼對JavaScript邏輯的正確性做保障。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
進行JavaScript重構時,我希望引入易于使用的測試框架來保證重構的順利進行,未來能持續(xù)通過測試代碼對JavaScript邏輯的正確性做保障。
JsUnit (//sourceforge.net/projects/jsunit/,//www.jsunit.net/)
JsUnit是一個獨立的JavaScript單元測試框架,和JUnit差不多,沒有上手難度,包括傳統的setUp和tearDown,提供的assert方法也和JUnit類似,多了assertNaN和assertUndefined等等JavaScript特有的方法。測試頁面必須在head里面引入jsUnitCore.js這個js文件。
測試套件的支持:提供了addTestPage和addTestSuite;
測試日志的支持:包括warn、info和debug三種日志級別,前端編碼不似后臺代碼,正式代碼中不宜使用過多l(xiāng)og,再說log也只有FF下才支持,現在好了,在測試代碼里盡情打吧。
千言萬語不及一個例子:
script language="javascript" src="jsUnitCore.js"/script
script language="javascript" src="play.js"/script //模塊JS
function testWithMainProcess() {
assertEquals("Web play url", "##//...##", webOnlinePlay());
}
項目的代碼里到處是Ajax調用,要做單元測試,看來打樁是不可避免了。Mock類的工具有許多,比如適合JQuery的QMock:
var mockJquery = new Mock(); mockJquery .expects(1) .method('ajax') .withArguments({ url: '//xxx, success: Function, dataType: "jsonp" }) .callFunctionWith({ feed : { entry : "data response" }}); > >這個樁正是mock了一個假的ajax jason返回:[feed:[entry:"data response"]],看看,使用就和以前接觸過的EasyMock差不多嘛。
對于JavaScript測試框架感興趣的同學還可以了解一些其他的測試框架,例如JSpec。
單元測試代碼建議就放在模塊的包內:test.html,即便理想狀況下,模塊單獨發(fā)布時,也是伴隨著測試用例的可靠的前端代碼。
從哪些JavaScript代碼開始做?
1、函數式的代碼。這樣的代碼保證獨立性好,也不需要打什么樁,測試成本低。
2、復雜的邏輯。
是否嘗試TDD?不建議在我們團隊內部使用,前端TDD需要更高的技巧,對人的因素要求更高。如果有一天,后臺Java代碼的TDD做好了,那么換成JavaScript的代碼,沒有本質區(qū)別。
如果效果得當,為什么不能把JavaScript的UT集成到ICP-CI上作為持續(xù)集成的一部分呢?
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:CSDN