跳转到主要内容
版本:26.倍

应用睾酮自然反应

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

通过阅读以下系列来获得更深入的了解测试工作React Native App示例:<一个href="https://callstack.com/blog/testing-react-native-with-the-new-jest-part-1-snapshots-come-into-play/" target="_blank" rel="noopener noreferrer">第1部分:Jest - Snapshot开始发挥作用和<一个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">第2部分:笑话-为你的动作和减少器还原快照

设置<一个类="hash-link" href="#setup" title="#">#

A partir de la versión 0.38 de react-native, Jest viene con una configuración include por defecto cuando se ejecuta:反应本机初始。La SiguienteConfiguraciónDeberíaSeraimáticamenteAñadidaATuArchivo Package.json:

{
“脚本” : {
“测试” : “笑话”
} ,
“笑话” : {
“预设” : “react-native”
}
}

注:si estás actualizando tu applicación de react-native y previamente usaste el“预置”jest-react-native《档案的依赖》(elimina la dependecia de tu archivo)package.jsony cambia el“预置”porreact-native在苏卢格。

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

测试de Instantanea<一个类="hash-link" href="#test-de-instantánea" title="#">#

Creemos联合国<一个href="//www.ieatrice.com/es-ES/docs/snapshot-testing">测试de instantaneapara un componente pequeño con unas cuantas远景组件de texto con algunos estilos:

/ / Intro.js
进口 反应 , { 组件 } “反应” ;
进口 { 样式表 , 文本 , 视图 } “react-native” ;
介绍 扩展 组件 {
使成为 ( ) {
返回 (
< 视图 风格 = { 风格 容器 } >
< 文本 风格 = { 风格 欢迎 } > 欢迎 反应 本地的 ! 文本 >
< 文本 风格 = { 风格 指令 } >
一个 反应 本地的 快照测试
文本 >
视图 >
) ;
}
}
常量 风格 = 样式表 创造 ( {
容器 : {
alignItems : “中心” ,
写成backgroundColor : “# F5FCFF” ,
柔性 : 1 ,
justifyContent : “中心” ,
} ,
指令 : {
颜色 : # 333333的 ,
Marginbottom. : 5 ,
textalign. : “中心” ,
} ,
欢迎 : {
字形大小 : 20. ,
保证金 : 10 ,
textalign. : “中心” ,
} ,
} ) ;
出口 默认的 介绍 ;

Ahora Vamos USAR LASCaracterísticas渲染Y Snapshot de React Y Mapest Para Interactuar Con Los Componentes y CaptuRar Lo Que Renderea,Creano Un Archivo Snapshot:

// __tests __ / intro-test.js
进口 反应 “反应” ;
进口 渲染器 '反应测试渲染器' ;
进口 介绍 '../介绍' ;
测试 ( 显示正确的 , ( ) => {
常量 = 渲染器 创造 ( < 介绍 /> ) 托杰森 ( ) ;
预计 ( ) toMatchSnapshot ( ) ;
} ) ;

当你运行时纱线测试或者开玩笑,将生成如下输出文件:

// ___tests __ / __快照__ / intro-test.js.snap
出口 ( 介绍正确渲染1 ] =
<视图
style = {
对象{
“alignItems”:“中心”,
“写成backgroundColor”:“# F5FCFF”,
“弯曲”:1、
“justifycontent”:“中心”,
}
}>
<文本
style = {
对象{
“字形大小”:20,
“保证金”:10
“textAlign”:“中心”,
}
}>
欢迎反应本地人!
< /文本>
<文本
style = {
对象{
“颜色”:“333333 #”,
“marginBottom”:5
“textAlign”:“中心”,
}
}>
这是一个React原生快照测试。
< /文本>
<文本
style = {
对象{
“颜色”:“333333 #”,
“marginBottom”:5
“textAlign”:“中心”,
}
}>
这是一个React原生快照测试。
< /文本>
;

próxima我将把这张图报寄给您,我将把这张图报寄给您será。Se debería应用的快照junto los cambios de código。请把照片寄给我,necesitará inspeccionar si se da por un cambio不是故意的。如果我是故意的,我可以开个玩笑jest -u.para sobre escribir en快照存在。

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

Configuracion preestablecida<一个类="hash-link" href="#configuración-preestablecida" title="#">#

“预设”的配置可以让你的想法在最终的结果útil在Facebook上。请在configuración的网站上填写您的姓名así您的姓名没有“预设”。

Entorno<一个类="hash-link" href="#entorno" title="#">#

react-nativeviene con un "preset" para Jest, así que el campojest.preset.de tupackage.jsondeberia apuntar一react-native。EL“PRESET”ES UN ENTORNO DE NODE QUE REFLEJA EL ENTORNO DE UNAAcmicaciónDoReathNative。Ya que no carga el dom o apis del navegador,mejora de gran manera el tiempo de Inicio de Jest。

perserfultiatacióndeganceignorepatterns.<一个类="hash-link" href="#personalización-de-transformignorepatterns" title="#">#

的<一个href="//www.ieatrice.com/es-ES/docs/configuration.html">transformIgnorePatterns选项可以用来指定哪些文件应该被Babel转换。多听módulos“npm”de react-native por desgracia no precompilan su código fuente antes de publicar。

Por defecto, el“预置”jest-react-native solo procesar los propios archivos fuente del proyecto y de react-native。如果你有需要转换的npm依赖项,你可以通过包括react-native之外的模块来自定义这个配置选项:

{
“transformIgnorePatterns” : (
“node_modules / (? ! (react-native |我的项目| react-native-button) /)”
]
}

setupfiles.<一个类="hash-link" href="#setupfiles" title="#">#

如果你要做的是比例configuración根据测试的档案,这里<一个href="//www.ieatrice.com/es-ES/docs/configuration.html">opción.setupfiles.de la configuracion请使用instalación中特定的脚本。

modulenamemapper.<一个类="hash-link" href="#modulenamemapper" title="#">#

La opcion<一个href="//www.ieatrice.com/es-ES/docs/configuration.html">modulenamemapper.我们可以带你去参观módulo另一个不同的地方。Por defecto, este“预置”mapea todas las imágenes一个“存根”módulo de la imagen, pero si un módulo no puede ser encontrado, está opción de la configuración puede ayudar:

{
“moduleNameMapper” : {
“my-module.js” : “< rootDir > /路径/ / my-module.js”
}
}

Consejos.<一个类="hash-link" href="#consejos" title="#">#

Simulacros demódulosnativos usando jest.mock<一个类="hash-link" href="#simulacros-de-módulos-nativos-usando-jestmock" title="#">#

我预先设定了“笑话”react-native包含Unos Cuantos“Mocks”Por Defecto Que SE APLICAN en UN Reachitorio de React-Native。但是,某些反应机本地组件或第三方组件依赖于要呈现的本机代码。En Tales Casos,El Sistema de“Mocking”Manual de Jest,Puede Ayudar A Evitar LaImplientación次等中心。

如果你是código,那就看你的羊驼的血统了react-native-video,podríasquerersimularlo con联合国“模拟”手册tal que是:

开玩笑 嘲笑 ( '反应机制 - 视频' , ( ) => '视频' ) ;

EstoRenderizaráELComponente Como<视频{...道具} />我们准备好了最后的结果是instantánea。另请参阅<一个href="//www.ieatrice.com/es-ES/docs/tutorial-react.html">在酶周围寻找并反应16

一个veces es necesario proporcionar联合国“模拟”手册MásComplejo。Por Ejeallo,Si Si Quieres Promover Los“Prop类型”O“静态字段”De Un Compounde Natiant A联合国“模拟”,Puedes Devolver Un Compounde Diferente de React Desde联合国“模拟”一个TravésdeeSte脚本辅助De eSt-React-本国的:

开玩笑 嘲笑 ( “路径/ / MyNativeComponent” , ( ) => {
常量 mockComponent = 需要 ( '反应原生/ jest / mockcomponent' ) ;
返回 mockComponent ( “路径/ / MyNativeComponent” ) ;
} ) ;

如果你喜欢使用“mock”手册,可以使用算法así:

开玩笑 嘲笑 ( '文本' , ( ) => {
常量 RealComponent = 开玩笑 requireActual ( '文本' ) ;
常量 反应 = 需要 ( “反应” ) ;
文本 扩展 反应 组件 {
使成为 ( ) {
返回 反应 createElement ( '文本' , 道具 , 道具 孩子们 ) ;
}
}
文本 proptype = RealComponent proptype ;
返回 文本 ;
} ) ;

在其他情况下,我们可以“模仿”一个联合国módulo但没有反应的成分。请用我的名字técnica。我建议你们检查código fuente del módulo那上面的logear módulo cuando se可以用真实的方式反映你的真实情况,模拟的模型手册可以用módulo真实的。

如果你想把这些东西“模仿”到我的生活中去módulos那就把它们重新定义到一个单独的档案中añadirlo,这是我的清单setupfiles.