




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
【移動應用開發(fā)技術】jest測試reactnative組件的步驟分析
這篇文章主要介紹了jest測試reactnative組件的步驟分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓在下帶著大家一起了解一下。目前Javascript的測試工具很多,但是針對React的測試策略,F(xiàn)acebook推出的ReactJs標配測試工具是Jest.Jest的官網(wǎng)地址:https://facebook.github.io/jest/。我們可以看到Jest官網(wǎng)宣稱的是:PainlessJavaScriptTesting。是Facebook用于測試服務和React應用程序的JavaScript單元測試框架。所謂單元測試也就是對每個單元進行測試,通俗的將一般針對的是函數(shù),類或單個組件,不涉及系統(tǒng)和集成。單元測試是軟件測試的基礎測試。Jest主要有以下特點:適應性:Jest是模塊化、可擴展和可配置的。沙箱和快速:Jest虛擬化了JavaScript的環(huán)境,能模擬瀏覽器,并且并行執(zhí)行快照測試:Jest能夠?qū)eact樹進行快照或別的序列化數(shù)值快速編寫測試,提供快速更新的用戶體驗。支持異步代碼測試:支持promises和async/await自動生成靜態(tài)分析結(jié)果:不僅顯示測試用例執(zhí)行結(jié)果,也顯示語句、分支、函數(shù)等覆蓋率。為什么要使用單元測試工具我們在開發(fā)過程中,不使用測試工具依然可以自己寫代碼進行單元測試,但是我們的代碼存在著相互調(diào)用關系,在測試過程中我們又希望使單元相對獨立而又能正常運行,就需要我們對被測函數(shù)的依賴函數(shù)和環(huán)境進行mock,并且在測試數(shù)據(jù)輸入、測試執(zhí)行和測試結(jié)果檢查方面存在很多相似性,測試工具正是為我們在這些方面提供了方便。準備階段需要一個rn項目,這里演示的是我個人的項目ReactNative-ReduxSaga-TODO安裝jest如果你是用react-nativeinit命令行創(chuàng)建的rn項目,并且你的rn版本在0.38以上,則無需安裝了。不太清楚的話就看一下package.json文件中是否包含以下代碼:
//
package.json
"scripts":
{
"test":
"jest"
},
"jest":
{
"preset":
"react-native"
}如果沒有就安裝一下npmijest--save-dev,并把上述代碼添加到package.json文件的對應位置。以上步驟完成后,簡單運行npmruntest測試一下jest是否配置成功。但我們沒有寫測試用例,終端會打印notestsfound。這時就配置完成了??煺諟y試寫一個組件import
React
from
'react';
import
{
Text,
View,
}
from
'react-native';
import
PropTypes
from
'prop-types';
const
PostArea
=
({
title,
text,
color
})
=>
(
<View
style={{
backgroundColor:
'#ddd',
height:
100
}}>
<Text
style={{
fontSize:
30
}}>{title}</Text>
<Text
style={{
fontSize:
15,
color
}}>{text}</Text>
</View>
);
export
default
PostArea;在項目根目錄下找到test文件夾,現(xiàn)在,讓我們使用React的測試渲染器和Jest的快照功能來與組件進行交互,并捕獲呈現(xiàn)的輸出并創(chuàng)建一個快照文件。//
PostArea_test.js
import
'react-native';
import
React
from
'react';
import
PostArea
from
'../js/Twitter/PostArea';
import
renderer
from
'react-test-renderer';
test('renders
correctly',
()
=>
{
const
tree
=
renderer.create(<PostArea
title="title"
text="text"
color="red"
/>).toJSON();
expect(tree).toMatchSnapshot();
});然后在終端運行npmruntest或jest。將會輸出:PASS
tests\PostArea_test.js(6.657s)
√renderscorrectly(5553ms)?1snapshotwritten.SnapshotSummary?1snapshotwrittenin1testsuite.TestSuites:1passed,1totalTests:
1passed,1totalSnapshots:
1added,1totalTime:
8.198sRanalltestsuites.PASS
tests\PostArea_test.js(6.657s)
√renderscorrectly(5553ms)?1snapshotwritten.SnapshotSummary?1snapshotwrittenin1testsuite.TestSuites:1passed,1totalTests:
1passed,1totalSnapshots:
1added,1totalTime:
8.198sRanalltestsuites.同時,在test文件夾下會輸出一個文件,即為生成的快照。//
Jest
Snapshot
v1,
https://goo.gl/fbAQLP
exports[`renders
correctly
1`]
=
`
<View
style={
Object
{
"backgroundColor":
"#ddd",
"height":
100,
}
}
>
<Text
accessible={true}
allowFontScaling={true}
disabled={false}
ellipsizeMode="tail"
style={
Object
{
"fontSize":
30,
}
}
>
title
</Text>
<Text
accessible={true}
allowFontScaling={true}
disabled={false}
ellipsizeMode="tail"
style={
Object
{
"color":
"red",
"fontSize":
15,
}
}
>
text
</Text>
</View>
`;修改源文件在下一次運行測試的時候,呈現(xiàn)的輸出將與之前創(chuàng)建的快照進行比較??煺諔摵痛a一起提交。當快照測試失敗的時候,就需要檢查是否有意或無意的更改。如果是和預期中的變化一樣,調(diào)用jest-u來覆蓋當前的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五暑期工勞務派遣與就業(yè)環(huán)境優(yōu)化合同
- 二零二五年度物流公司貨車司機服務質(zhì)量考核與獎勵協(xié)議
- 2025年度網(wǎng)絡安全防護等級評定安全協(xié)議書
- 2025年度汽車零部件貨物運輸安全與質(zhì)量協(xié)議
- 二零二五年度環(huán)保產(chǎn)業(yè)技術人才招聘與綠色創(chuàng)新協(xié)議
- 2025年度環(huán)保型清潔公司員工聘用合同書
- 二零二五年度水利設施監(jiān)控維保及災害預警服務合同
- 二零二五年度海鮮水產(chǎn)店轉(zhuǎn)讓與經(jīng)營協(xié)議
- 二零二五年度倆人共同創(chuàng)業(yè)經(jīng)營咖啡廳合伙協(xié)議
- 二零二五年度農(nóng)村土地租賃合同模板(現(xiàn)代農(nóng)業(yè)物流園區(qū))
- 煤礦應急救援培訓教案
- 《圖書館資源利用》課件
- 2024-2030年中國光伏建筑一體化(BIPV)行業(yè)發(fā)展模式規(guī)劃分析報告
- 設備工程師招聘面試題與參考回答
- 部編版小學道德與法治五年級下冊《不甘屈辱-奮勇抗爭》第一課時課件
- 《贏利》精讀圖解
- 讀書分享讀書交流會《你當像鳥飛往你的山》課件
- 大學生職業(yè)素養(yǎng)訓練(第六版)教案 第二單元 學習職業(yè)禮儀
- 2022年中華護理學會輸液連接裝置安全管理專家共識解讀
- 內(nèi)鏡下ESD護理配合
- DB34∕T 1644-2012 南方紅豆杉用材林栽培技術規(guī)程
評論
0/150
提交評論