




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】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用于測試服務(wù)和React應(yīng)用程序的JavaScript單元測試框架。所謂單元測試也就是對每個單元進行測試,通俗的將一般針對的是函數(shù),類或單個組件,不涉及系統(tǒng)和集成。單元測試是軟件測試的基礎(chǔ)測試。Jest主要有以下特點:適應(yīng)性:Jest是模塊化、可擴展和可配置的。沙箱和快速:Jest虛擬化了JavaScript的環(huán)境,能模擬瀏覽器,并且并行執(zhí)行快照測試:Jest能夠?qū)eact樹進行快照或別的序列化數(shù)值快速編寫測試,提供快速更新的用戶體驗。支持異步代碼測試:支持promises和async/await自動生成靜態(tài)分析結(jié)果:不僅顯示測試用例執(zhí)行結(jié)果,也顯示語句、分支、函數(shù)等覆蓋率。為什么要使用單元測試工具我們在開發(fā)過程中,不使用測試工具依然可以自己寫代碼進行單元測試,但是我們的代碼存在著相互調(diào)用關(guān)系,在測試過程中我們又希望使單元相對獨立而又能正常運行,就需要我們對被測函數(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文件的對應(yīng)位置。以上步驟完成后,簡單運行npmruntest測試一下jest是否配置成功。但我們沒有寫測試用例,終端會打印notestsfound。這時就配置完成了。快照測試寫一個組件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)建的快照進行比較??煺諔?yīng)該和代碼一起提交。當快照測試失敗的時候,就需要檢查是否有意或無意的更改。如果是和預(yù)期中的變化一樣,調(diào)用jest-u來覆蓋當前的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 八年級體育課教案上
- 跨境電商中的跨境支付問題及解決方案
- 建設(shè)工程招標范圍和標準學(xué)習(xí)情境二建設(shè)工程招標課件
- 河北省永年縣第一中學(xué)2024年高考模擬金典卷數(shù)學(xué)試題(六)試題
- 鋼筋的連接鋼筋連接的原則接頭應(yīng)盡量設(shè)置在受力較小處以降低接頭對鋼筋傳力的影響
- 小區(qū)合租轉(zhuǎn)租合同范本
- 晉中信息學(xué)院《超聲檢查技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 合肥城市學(xué)院《企業(yè)文化研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 跨國銀行的內(nèi)部審計與合規(guī)監(jiān)管探討
- 遼寧中醫(yī)藥大學(xué)杏林學(xué)院《水環(huán)境與生態(tài)學(xué)基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2030年中國光伏建筑一體化(BIPV)行業(yè)發(fā)展模式規(guī)劃分析報告
- 設(shè)備工程師招聘面試題與參考回答
- 部編版小學(xué)道德與法治五年級下冊《不甘屈辱-奮勇抗爭》第一課時課件
- 《贏利》精讀圖解
- 讀書分享讀書交流會《你當像鳥飛往你的山》課件
- 大學(xué)生職業(yè)素養(yǎng)訓(xùn)練(第六版)教案 第二單元 學(xué)習(xí)職業(yè)禮儀
- 2022年中華護理學(xué)會輸液連接裝置安全管理專家共識解讀
- 內(nèi)鏡下ESD護理配合
- DB34∕T 1644-2012 南方紅豆杉用材林栽培技術(shù)規(guī)程
- 《中華人民共和國道路運輸條例》知識專題培訓(xùn)
- 直腸癌課件完整版本
評論
0/150
提交評論