Cypress是一种现代测试自动化工具,因其易于安装、对各种报告的内置支持以及编写单元、API和端到端测试的能力而广受欢迎。Cypress支持几乎所有的现代架构开发框架,例如Angular、ReactNative、Vu和MVC框架等。本文将讨论如何使用Cypress测试ReactNative应用程序。什么是ReactNative应用程序?ReactNative是一个基于JavaScript的开源框架,支持使用相同的代码库在Android、iOS和Web应用程序等多个平台上构建不同类型的应用程序。ReactNative允许人们访问原生视图、API和组件。因此,开发将更快、更高效。构建React应用程序Expo框架有助于构建ReactNative应用程序。它支持基于相同代码库构建的Android、iOS和Web应用程序。Expo在Github上列出了许多有用的示例。使用Expo,可以构建一个简单的React原生应用:1.使用npm安装expo:npminstallexpo2.使用命令创建原生应用:npxcreate-react-native-app–template3.使用参考:installexpocli运行你的应用:npmi-gexpo-cli进入app目录,输入命令:npmrunweb在浏览器窗口启动应用,访问地址:http://localhost:19006/如果你使用一个空白的React项目模板,它应该如下图所示,是一个简单的页面。注意:端口可能会更改,请在运行命令后检查控制台的日志。下面,我们使用一个空白的项目模板来创建一个React应用程序,其中包含最基本的代码。App.js主要源码如下:import{View,Text}from"react-native";exportdefaultfunctionApp(){return(UniversalReactwithExpo);这样做是为了在设备上设置React应用程序。如何使用Cypress执行React应用程序测试Cypress教程提供了有关设置Cypress的详细指南。我们至少要做到以下几点:1.安装Cypress:npminstallcypress2。打开Cypress项目:npxcypressopen此时Cypress已经创建了目录的所有基本结构。参考例子:expomy-react-app访问地址是http://localhost:19006/,所以我们需要访问这个地址来测试我们的应用。我们之前创建的expo应用程序只有一组文本:“UniversalReactwithExpo”。我们使用了一个简单的赛普拉斯脚本来验证。在您的项目目录中,创建firsttest.js文件并添加Cypress脚本来验证:describe('MyFirstTest',()=>{it('VerifyText',()=>{cy.visit('http://localhost:19006/');cy.get("div[id='root']").should('have.text','UniversalReactwithExpo');});})上面的代码中,我们正在访问我们的本地站点并验证文本是否存在。使用ReactNative和Cypress验证API调用大多数ReactNative应用程序在内部调用API接口,因此我们也可以使用Cypress来验证。假设我们有一个具有API调用的React应用程序。从“反应”中导入反应,{useEffect,useState};import{ActivityIndi??cator,FlatList,Text,View}from'react-native';导出默认函数App(){const[isLoading,setLoading]=useState(true);const[数据,setData]=useState([]);useEffect(()=>{fetch('https://reqres.in/api/users?page=1').then((response)=>response.json()).then((json)=>setData(json.data)).catch((error)=>console.error(error)).finally(()=>setLoading(false));},[]);return({isLoading?:(({item.id},{item.first_name},{item.email})}/>)});};上面的代码调用APIhttps://reqres.in/api/users?page=1返回一个JSON值数组。我们应该能够断言body和status等的内容。用于验证ReactNative应用程序中API调用的Cypress脚本describe('MyFirstTest',()=>{it('VerifyAPI',()=>{cy.intercept('*/users?*').as('用户');cy.visit('http://localhost:19006/');cy.wait('@users').then(({response})=>{expect(response.statusCode).to.eq(200)expect(response.body.data.length).to.eq(6)expect(response.body.data[0].email).to.eq('george.bluth@reqres.in')})});})在上面的代码中,我们使用Cypress拦截功能来等待API加载。然后我们从API获取响应并在测试中验证它:因此我们可以在Cypress中测试ReactNative应用程序。此外,我们可以设置视口并将其更改为不同的设备分辨率,以测试移动Web应用程序。原标题:TestReactNativeAppsWithCypress,作者:GaneshHegde