1

越來越多的人幕袱,使用React開發(fā)Web應(yīng)用仪际。它的測試就成了一個大問題祝谚。

React的組件結(jié)構(gòu)和JSX語法宪迟,不適用傳統(tǒng)的測試工具,必須有新的測試方法和工具交惯。

本文總結(jié)目前React測試的基本做法和最佳實踐次泽,手把手教你如何寫React測試。

![alt](http://www.ruanyifeng.com/blogimg/asset/2016/bg2016021201.png)

一席爽、Demo應(yīng)用

#請先安裝Demo箕憾。

```

$ git clone https://github.com/ruanyf/react-testing-demo.git

$ cd react-testing-demo && npm install

$ npm start> 引用

```

然后,打開http://127.0.0.1:8080/, 你會看到一個 Todo 應(yīng)用拳昌。

![alt](http://www.ruanyifeng.com/blogimg/asset/2016/bg2016021202.png)

接下來袭异,我們就要測試這個應(yīng)用,一共有5個測試點炬藤。

1. 應(yīng)用標(biāo)題應(yīng)為"Todos"

2. Todo項的初始狀態(tài)("未完成"或"已完成")應(yīng)該正確

3. 點擊一個Todo項御铃,它就反轉(zhuǎn)狀態(tài)("未完成"變?yōu)?已完成",反之亦然)

4. 點擊刪除按鈕沈矿,該Todo項就被刪除

5. 點擊添加按鈕上真,會新增一個Todo項

這5個測試用例都已經(jīng)寫好了,執(zhí)行一下就可以看到結(jié)果羹膳。

```

$ npm test

```

下面就來看睡互,測試用例應(yīng)該怎么寫。測試框架我用的是Mocha陵像,如果你不熟悉就珠,可以先讀我寫的《Mocha教程》。

## 二醒颖、測試工具庫

React測試必須使用官方的測試工具庫妻怎,但是它用起來不夠方便,所以有人做了封裝泞歉,推出了一些第三方庫逼侦,其中Airbnb公司的Enzyme最容易上手。

這就是說腰耙,同樣的測試用例至少有兩種寫法榛丢,本文都將介紹。

- 官方測試工具庫的寫法

- 1Enzyme的寫法

## 三挺庞、官方測試工具庫

我們知道晰赞,一個React組件有兩種存在形式:虛擬DOM對象(即React.Component的實例)和真實DOM節(jié)點。官方測試工具庫對這兩種形式,都提供測試解決方案宾肺。

- Shallow Rendering:測試虛擬DOM的方法

- DOM Rendering: 測試真實DOM的方法

### 3.1Shallow Rendering

Shallow Rendering (淺渲染)指的是溯饵,將一個組件渲染成虛擬DOM對象侵俗,但是只渲染第一層锨用,不渲染所有子組件,所以處理速度非嘲ィ快增拥。它不需要DOM環(huán)境,因為根本沒有加載進(jìn)DOM寻歧。

首先掌栅,在測試腳本之中,引入官方測試工具庫码泛。

```

import TestUtils from 'react-addons-test-utils';

```

### 3.2renderIntoDocument

官方測試工具庫的第二種測試方法猾封,是將組件渲染成真實的DOM節(jié)點,再進(jìn)行測試噪珊。這時就需要調(diào)用renderIntoDocument 方法晌缘。

### 3.3findDOMNode

如果一個組件已經(jīng)加載進(jìn)入DOM,react-dom模塊的findDOMNode方法會返回該組件所對應(yīng)的DOM節(jié)點痢站。

我們使用這種方法來寫第四個測試用例磷箕,用戶點擊Todo項時的行為。

## 四阵难、Enzyme庫

Enzyme是官方測試工具庫的封裝岳枷,它模擬了jQuery的API,非常直觀呜叫,易于使用和學(xué)習(xí)空繁。

它提供三種測試方法。

### 4.1 shallow

shallow方法就是官方的shallow rendering的封裝朱庆。

下面是第一個測試用例家厌,測試App的標(biāo)題。

### 4.2 render

render方法將React組件渲染成靜態(tài)的HTML字符串椎工,然后分析這段HTML代碼的結(jié)構(gòu)饭于,返回一個對象。它跟shallow方法非常像维蒙,主要的不同是采用了第三方HTML解析庫Cheerio掰吕,它返回的是一個Cheerio實例對象。

下面是第二個測試用例颅痊,測試所有Todo項的初始狀態(tài)殖熟。

### 4.3 mount

mount方法用于將React組件加載為真實DOM節(jié)點。

下面是第三個測試用例斑响,測試刪除按鈕菱属。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钳榨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子纽门,更是在濱河造成了極大的恐慌薛耻,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赏陵,死亡現(xiàn)場離奇詭異饼齿,居然都是意外死亡,警方通過查閱死者的電腦和手機蝙搔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門缕溉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吃型,你說我怎么就攤上這事证鸥。” “怎么了勤晚?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵枉层,是天一觀的道長。 經(jīng)常有香客問我运翼,道長返干,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任血淌,我火速辦了婚禮矩欠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘悠夯。我一直安慰自己癌淮,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布沦补。 她就那樣靜靜地躺著乳蓄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪夕膀。 梳的紋絲不亂的頭發(fā)上虚倒,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音产舞,去河邊找鬼魂奥。 笑死,一個胖子當(dāng)著我的面吹牛易猫,可吹牛的內(nèi)容都是我干的耻煤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哈蝇!你這毒婦竟也來了棺妓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤炮赦,失蹤者是張志新(化名)和其女友劉穎怜跑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體眼五,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡妆艘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年彤灶,在試婚紗的時候發(fā)現(xiàn)自己被綠了看幼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡幌陕,死狀恐怖诵姜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搏熄,我是刑警寧澤棚唆,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站心例,受9級特大地震影響宵凌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜止后,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一瞎惫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧译株,春花似錦瓜喇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至匪补,卻和暖如春伞辛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背夯缺。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工蚤氏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人喳逛。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓瞧捌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子姐呐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 在React這股目前最熱前端框架之風(fēng)刮來之前殿怜,一直在Cocos2d-html5游戲和半路出家的Android應(yīng)用的...
    hahafei閱讀 369評論 0 2
  • 作者: 阮一峰原文地址:http://www.ruanyifeng.com/blog/2016/02/react-...
    IT程序獅閱讀 1,655評論 0 6
  • 前幾天有事住在親戚家里,恰逢我姨哥想做個花架曙砂,于是我們幾個找來材料头谜,又是寫又是畫,光圖就畫了好幾張鸠澈,可是到頭來還是...
    惠影風(fēng)華閱讀 250評論 0 1
  • 鎖壞了柱告。今天夜里發(fā)現(xiàn)電子鎖不好使了。幸虧現(xiàn)在發(fā)現(xiàn)笑陈,否則我們不在溫哥華的時候壞掉就麻煩多了际度。明天白天要把電池連盒子一...
    小王加油啊閱讀 111評論 0 0
  • 素文是個平凡的姑娘,在一群搖姿生曳的女同事中涵妥,她平凡而又低調(diào)乖菱,工作上努力奮進(jìn),她明白像她這樣沒有任何家庭背景的...
    塵埃里的向陽花閱讀 399評論 1 1