跳到主要内容
版本:26.x.

testareaaplicaceţiilor反应本地

在Facebook上,我们使用Jest进行测试<一种href="https://reactnative.dev/" target="_blank" rel="noopener noreferrer">原生应用程序。

dobândiţioînţelegeremaiprofundăîntestareauniiaplicaţii审查了原生citindurmătoareleserii:<一种href="https://callstack.com/blog/testing-react-native-with-the-new-jest-part-1-snapshots-come-into-play/" target="_blank" rel="noopener noreferrer">Partea 1:Jest - Instantaneele Intrineînjocşi.。<一种href="https://callstack.com/blog/testing-react-native-with-the-new-jest-part-2-redux-snapshots-for-your-actions-and-reducers/" target="_blank" rel="noopener noreferrer">Partea 2:Jest - Instantanee Redux PentruAcţiunii reductori

Instalare.<一种班级="hash-link" href="#instalare" title="#">#

Incepand Cu Versiunea反应天然0.38,Instalarea eSte intrus hearlicata nelyuncicândseruleazō反应本机初始。Urmatoarea Configuratie Ar TrebuiSăFieAdăugatăAutomatînfişierulpack.json:

{
“脚本” {
“测试” “笑话”
}
“笑话” {
“预设” “反应本地”
}
}

nottă:dacăstualizaţiaplicaceţia反应 - 原生şiaţiulerizat前预设areajest-反应原住民,Evielinaindiceenţaindinfişierulpackage.json.şiSchimbaği预审亚洲铜反应本地

跑步纱线测试用jest运行测试。

testarea de想象一下<一种班级="hash-link" href="#testarea-de-imagine" title="#">#

SăCREăM联合国<一种href="/ro/docs/snapshot-testing">测试de想象一下pentru o componentămicuţăcucâteva视图-urişicompounde de textşiforestiluri:

// intro.js.
进口 反应 { 成分 } “反应” ;
进口 { 样式表 文本 看法 } '反应原住民' ;
班级 介绍 延伸 成分 {
使成为 {
返回
< 看法 风格 = { 风格 容器 } >
< 文本 风格 = { 风格 欢迎 } > 欢迎 反应 本国的 !! 文本 >
< 文本 风格 = { 风格 指示 } >
一种 反应 本国的 快照测试
文本 >
看法 >
;
}
}
const 风格 = 样式表 创造 {
容器 {
aligntems. '中央'
背景颜色 '#f5fcff'
柔性 1
justifycontent. '中央'
}
指示 {
颜色 '#333333'
Marginbottom. 5.
textalign. '中央'
}
欢迎 {
字体大小 20.
利润 10.
textalign. '中央'
}
} ;
出口 默认 介绍 ;

Acumhaidežisăulerizămprocesorul de Randare Reactşifuncţionationitatadin jest pentru testarea de imagine pentru ainteracţionacucompanceaşia captura rezultulşia creaunfişierde想象:

// __tests __ / intro-test.js
进口 反应 “反应” ;
进口 渲染器 '反应测试渲染器' ;
进口 介绍 '../介绍' ;
测试 '渲染正确' => {
const = 渲染器 创造 < 介绍 /> 托杰森 ;
预计 tomatchsnapshot. ;
} ;

当你运行时纱线测试或者笑话,这将生成如下所示的输出文件:

// ___tests __ / __快照__ / intro-test.js.snap
出口 [ ` 介绍正确渲染1 ` ] = `
<查看
style = {
目的 {
“alignitems”:“中心”,
“backgroundcolor”:“#f5fcff”,
“Flex”:1,
“justifycontent”:“中心”,
}
}>
style = {
目的 {
“fontsize”:20,
“边缘”:10,
“textalign”:“中心”,
}
}>
欢迎反应本地人!
style = {
目的 {
“颜色”:“#333333”,
“Marginbottom”:5,
“textalign”:“中心”,
}
}>
这是一个原生快照测试的反应。
` ;

数据viitoarecândexecutağitestele,rezultatul va fi比较cu imagineacreatieă前。快照应与代码更改一起提交。AtunciCând联合国测试De ImagineEşuează,TrebuieSăISHECTAţIDACăESTEVORBADE O MODIFIFARE INTENIONATION SAU NEINTENAIONATION。înCazulîncare谢里姆巴雷埃斯特·伊恩·塞伊蒂彭jest -u.pentru a suprascrie imaginea存在。

此示例的代码可用<一种href="https://github.com/facebook/jest/tree/master/examples/react-native" target="_blank" rel="noopener noreferrer">例子/反应原生

configurareapresetării.<一种班级="hash-link" href="#configurarea-presetării" title="#">#

PresetareaInižializeazăMediulşiEsteFoarteDogmaticşiSeBazeazăPE CEEA CE AMGăSITa fiuer la Facebook。ToateOp�iilledeConfigurare Pot Pot Pot PoT Fi SuprascriseAşa暨aceSea罐Fi个人化atundicândnuseilizeazýniciopresetare。

Mediu<一种班级="hash-link" href="#mediu" title="#">#

反应本地Este Livrat Cu O Presetare Jest,Astfelîncâmpuljest.preset.dinpackage.json.ar trebuisăindicecătre反应本地。预设是模拟React Native应用程序的环境的节点环境。因为它没有加载任何DOM或浏览器API,因此它大大提高了Jest的启动时间。

personalizărideganceignorepatterns.<一种班级="hash-link" href="#personalizări-de-transformignorepatterns" title="#">#

这<一种href="/ro/docs/configuration">reganceIgnorePatterns.选项可用于指定Babel转换哪些文件。DINPăCATEMulte模块NPM Pentru React-Native Nu Au Codul Sursă预先编译Înaintede Publicare。

隐式预设jest-React-Native DoarProceseazăFişierelesursădin proiectşi反应原住民。如果您有必须转换的NPM依赖项,则可以通过包括除React-Native之外的模块来自定义此配置选项:

{
“转化术级斑点” [
“node_modules /(?(反应本机|我的项目|反应 - 原生按钮)/)”
]
}

setupfiles.<一种班级="hash-link" href="#setupfiles" title="#">#

Dacīdoriţisăsectionaţiconfigurərisuplimentare pentru fiecarefişierde测试,<一种href="/ro/docs/configuration.html">Opõiuneade Configurare.setupfiles.Poate folosiths pentru一个特定的script-uri deiniţializare。

modulenamemapper.<一种班级="hash-link" href="#modulenamemapper" title="#">#

Opõiunea.<一种href="/ro/docs/configuration">modulenamemapper.Poate FiUtilizatăPENTRU MAPAREA O CALE DE MODULCăTRE联合国MODUL DIFERIT。înmod隐含预预araeamapeazătoate imaginilecătre联合国moduldublurōde imagine dar dacher un modul nu poate figăsitaceAstăopţiunede configurare poate ajuta:

{
“modulenamapper” {
“my-module.js” /path/to/my-module.js”
}
}

Recomandări.<一种班级="hash-link" href="#recomandări" title="#">#

Mock-Uiţi模块本地CU JEST.MOCK<一种班级="hash-link" href="#mock-uiți-module-native-cu-jestmock" title="#">#

PreseTarea jest intinlanîn反应本地VINE CUCâteva模拟 - URI Implicite,护理SUNT aplate PE UN PE UN PROIET-Native。但是,某些反应机本地组件或第三方组件依赖于要呈现的本机代码。ÎnAstfel de Cazuri,SISTEM Manual de Mocking Din Jest Poate Ajuta Pentru DublareaImplientării。

De Inmedu,înCazulînCare Codul Vostru Depine de O Companctionă视频NativăexternăNumită反应本机 - 视频AţIPUTEA-O Dubla Cu UN Mock ManualînFelulUrmător:

笑话 嘲笑 '反应机制 - 视频' => '视频' ;

Acest Lucru va Randa Compenta CA<视频{...道具} />Cu Toate Proprietingsile销售RegăsiteînInstantaneu。也可以看看<一种href="/ro/docs/tutorial-react">在酶周围寻找并反应16

Uneori,Este NevoieSăFurnizaţioDublurō手动ăMai Complex。DE _Cazulîncaredoriţis'dredirecţionaţiproprietăţisaucâmpuriatteice ale Unei Componente NationCătre嘲笑,Puteţiretcha o Computionă反应Dinteritădintr-un Mock Prin母版AJUTOR DIN JEST-React-Nover-React-Nation:

笑话 嘲笑 '路径/到/ mynativeComponent' => {
const 模仿 = 要求 '反应原生/ jest / mockcomponent' ;
返回 模仿 '路径/到/ mynativeComponent' ;
} ;

SauDacòDorićiSăVăReaţiPropriulMock手册,Puteţi面部Ceva de Genul Acesta:

笑话 嘲笑 '文本' => {
const Realcomponent. = 笑话 请求 '文本' ;
const 反应 = 要求 “反应” ;
班级 文本 延伸 反应 成分 {
使成为 {
返回 反应 牧马赛 '文本' 道具 道具 孩子们 ;
}
}
文本 概括 = Realcomponent. 概括 ;
返回 文本 ;
} ;

ÎnAlteCazuri,PoateDoriţiSăMock-uiţiof Modul Netiv,Care Nu Este O组分反应。Aceeaşitehnicùpoate fi aplicat'。SERecomandăisparea codului sursădin modululnativşilogareaatuncicândruleazăoaplicaţierest native pe un dissozitivrealşiapoi modelarea unui mock手册dupō模ă模态变动真实。

DACăAJUNGEţISăMOCK-UIţIACELEAI SOMPURE DE MULTE ORI ESTE RECOMANDATIN DECOREA ACESTOR MOCK-URIÎNTR-UN FIQUESIER SEPLIENşiadăugarealor la lista desetupfiles.