中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

javascript 測(cè)試工具abut發(fā)布

  abut全稱(chēng)為annotations-based unit testing,基于注釋的單元測(cè)試工具,也可以就地取此英文的原義(毗鄰)稱(chēng)呼它。眾所周知,Javascript實(shí)在不好做測(cè)試,即使我這個(gè)工具現(xiàn)在對(duì)事件響應(yīng)這東西還是無(wú)可奈何的,這只能黑盒測(cè)試。不過(guò),能白盒測(cè)試的,我們還是進(jìn)行白盒測(cè)試。Javascript經(jīng)近幾年的迅猛發(fā)展,也涌現(xiàn)諸如Qunit,JSpec這些優(yōu)秀的測(cè)試框架。但我最后還是決定自己搞一個(gè)。原因如下:

  • 我喜歡自造輪子。
  • 由于在寫(xiě)框架(龜速進(jìn)行中),傾向于選擇器,測(cè)試工具等東西都出自自家。
  • 寫(xiě)文檔是痛苦,倒不如寫(xiě)注釋?zhuān)热粚?xiě)注釋?zhuān)鸵锉M其用,一次性把注釋與測(cè)試都寫(xiě)完。
  • 其他測(cè)試框架寫(xiě)測(cè)試都很惡心,單個(gè)測(cè)試的代碼量比較長(zhǎng)(本來(lái)就不想寫(xiě),勉為其難地寫(xiě),方法易用是王道)。
  • 其他測(cè)試框架寫(xiě)測(cè)試都是寫(xiě)在另一個(gè)文件上,更增加人寫(xiě)測(cè)試的抗拒性。
  • 寫(xiě)在另一個(gè)文件上,萬(wàn)一這文件丟失了怎么辦?!

  順便說(shuō)一下單元測(cè)試的好處,緩解一下大家對(duì)它的厭惡。

  http://www.cnblogs.com/nuaalfm/archive/2010/02/26/1674235.html
  單元測(cè)試的優(yōu)點(diǎn)
  1、它是一種驗(yàn)證行為。
  程序中的每一項(xiàng)功能都是測(cè)試來(lái)驗(yàn)證它的正確性。它為以后的開(kāi)發(fā)提供支緩。就算是開(kāi)發(fā)后期,我們也可以輕松的增加功能或更改程序結(jié)構(gòu),而不用擔(dān)心這個(gè)過(guò)程中會(huì)破壞重要的東西。而且它為代碼的重構(gòu)提供了保障。這樣,我們就可以更自由的對(duì)程序進(jìn)行改進(jìn)。
  2、它是一種設(shè)計(jì)行為。
  編寫(xiě)單元測(cè)試將使我們從調(diào)用者觀察、思考。特別是先寫(xiě)測(cè)試(test-first),迫使我們把程序設(shè)計(jì)成易于調(diào)用和可測(cè)試的,即迫使我們解除軟件中的耦合。
  3、它是一種編寫(xiě)文檔的行為。
  單元測(cè)試是一種無(wú)價(jià)的文檔,它是展示函數(shù)或類(lèi)如何使用的最佳文檔。這份文檔是可編譯、可運(yùn)行的,并且它保持最新,永遠(yuǎn)與代碼同步。
  4、它具有回歸性。
  自動(dòng)化的單元測(cè)試避免了代碼出現(xiàn)回歸,編寫(xiě)完成之后,可以隨時(shí)隨地的快速運(yùn)行測(cè)試。

  基于上面的原因,我的單元測(cè)試與當(dāng)前流行的測(cè)試框架有很大不同,首先測(cè)試代碼與我們的執(zhí)行代碼是位于同一個(gè)文件,其次它是非常符號(hào)化的(汲取模板系統(tǒng)的經(jīng)驗(yàn)),最后它總是對(duì)整個(gè)文件進(jìn)行操作。為了獲取注釋?zhuān)沂怯肁JAX的同步請(qǐng)求實(shí)現(xiàn)的(dom.abut(url))。

  現(xiàn)在說(shuō)說(shuō)一些相關(guān)概念。既然是單元測(cè)試,每個(gè)測(cè)試代碼都應(yīng)該封閉在一個(gè)獨(dú)立的環(huán)境中,通常我們用閉包收拾之。但有可能連續(xù)幾個(gè)測(cè)試程序都共有一個(gè)測(cè)試數(shù)據(jù)呢,但這測(cè)試數(shù)據(jù)當(dāng)然也不能丟在全局作用域下,于是就有了大閉包與小閉包之分。具體表現(xiàn)如下:

//第二個(gè)參數(shù)僅在瀏覽器支持Object.defineProperties時(shí)可用
applyIf(Object,{
create:
function( proto, props ) {//ecma262v5 15.2.3.5
//略去具體實(shí)現(xiàn)
},
//$$$$same(Object.keys({aa:1,bb:2,cc:3}),["aa","bb","cc"])
keys: function(obj){//ecma262v5 15.2.3.14
//略去具體實(shí)現(xiàn)
}
});

//用于創(chuàng)建Javascript1.6 Array的迭代器
function iterator(vars, body, ret) {
return eval('[function(fn,scope){'+
'for(var '+vars+'i=0,l=this.length;i<l;i++){'+
body.replace(
'_', 'fn.call(scope,this[i],i,this)') +
'}' +
ret
+
'}]')[0];
};
//注釋照搬FF官網(wǎng)
/*

<<<<
var arr = [1,2,3,4,5,6];
$$$$eq(arr.indexOf(2),1)
$$$$eq(arr.lastIndexOf(6),5)
arr.slice(3).forEach(function(el,index,aaa){
$$$$log(el,"item");
$$$$log(index,"index");
$$$$log(aaa,"array");
});
var arr2 = arr.map(function(el){
return el+1;
});
$$$$same(arr2,[2,3,4,5,6,7]);
>>>>
*
*/
applyIf(Array[PROTO],{
//定位類(lèi) 返回指定項(xiàng)首次出現(xiàn)的索引。
indexOf: function (el, index) {
//略去具體實(shí)現(xiàn)
},
//定位類(lèi) 返回指定項(xiàng)最后一次出現(xiàn)的索引。
lastIndexOf: function (el, index) {
//略去具體實(shí)現(xiàn)
},

it知識(shí)庫(kù)javascript 測(cè)試工具abut發(fā)布,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 成人1区| 黄色网址免费在线观看 | 久久久久国产一区二区三区 | 亚洲精选一区二区 | 亚洲视频在线一区 | 在线一区| av手机在线看 | 免费在线色| 天天爽天天操 | 日韩高清中文字幕 | 久久一区精品 | 日韩精品专区在线影院重磅 | 久久精品一区 | 日韩欧美在线视频播放 | 人人九九| 亚洲在线 | 黄色香蕉视频在线观看 | 国产成人高清视频 | 91精品国产自产精品男人的天堂 | 亚洲成人自拍 | 黄色大片免费观看 | 中文字幕成人 | 久久高清 | 四虎精品在线 | 在线视频中文字幕 | 国产精品免费一区二区三区四区 | 欧美一级大黄 | 日本亚洲一区 | 欧美一区视频 | 国产情侣久久 | 精品亚洲一区二区三区四区五区 | 久久精品国产一区老色匹 | 一区二区国产精品 | 久久久久久亚洲欧洲 | 日韩亚洲视频 | 男人天堂视频在线观看 | 国产精品久久久久久久久久尿 | 国产98色在线 | 久久久精品一区二区 | 999国产精品视频 | 欧美精品一区二区三区蜜臀 |