尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

如何10分钟为Laravel应用接入Cypress:Laracasts/Cypress安装与首个测试完整教程

如何10分钟为Laravel应用接入Cypress:Laracasts/Cypress安装与首个测试完整教程 如何10分钟为Laravel应用接入CypressLaracasts/Cypress安装与首个测试完整教程【免费下载链接】cypressLaravel Cypress Integration项目地址: https://gitcode.com/gh_mirrors/cyp/cypressLaracasts/Cypress 是一个为 Laravel 应用提供 Cypress 端到端测试完整脚手架的 Composer 包。它一键生成测试目录、配置文件和.env.cypress环境隔离机制并内置cy.login()、cy.create()等 Laravel 专属命令让你用 3 条命令就能跑通第一个 E2E 测试。为什么需要 Cypress 做 Laravel 前端测试传统的 PHPUnit 功能测试只能验证接口返回了什么而 Cypress 直接在真实浏览器里模拟用户点击、访问和断言页面内容覆盖的正是注册登录、表单提交、页面跳转这类用户最关心的场景。难点在于Cypress 本身是 Node 生态工具它并不知道 Laravel 有 Facade、Factory、Artisan 命令这些概念。Laracasts/Cypress 解决的正是这个断层——通过一组仅开发环境暴露的 API 端点定义在src/routes/cypress.php让 JS 测试脚本能直接调用后端的工厂方法、认证逻辑和数据库迁移。一键安装3 条命令搞定在 Laravel 项目根目录依次执行# 1. 通过 npm 安装 Cypress 本体 npm install cypress --save-dev # 2. 通过 Composer 以开发依赖引入本包 composer require laracasts/cypress --dev # 3. 生成测试脚手架 php artisan cypress:boilerplate第 3 步由 CypressBoilerplateCommand 命令完成它会交互式询问目录位置默认tests/cypress然后自动完成以下工作生成内容说明cypress/integration/example.cy.js可直接运行的示例测试cypress/support/laravel-commands.jsLaravel 专属命令集cypress/support/laravel-routes.js按路由名访问页面cypress/plugins/swap-env.js环境文件切换逻辑cypress.config.js预配置好的测试文件baseUrl取自APP_URL.env.cypress复制自.env的独立测试环境文件如果已经存在cypress.config.js命令会提示手动合并或使用--force覆盖。运行首个 Cypress 测试启动 Cypress 交互窗口npx cypress open在打开的窗口中选择E2E Testing再点击Start E2E Testing in Chrome即可看到测试列表。点击example.cy.js运行它的逻辑非常简单it(shows a homepage, () { cy.visit(/); cy.contains(Laravel); });全部变绿说明接入成功 环境隔离.env.cypress 自动切换机制验收测试通常需要独立的数据库避免污染开发数据。编辑项目根目录的.env.cypress建议指定专用库DB_CONNECTIONmysql DB_DATABASEcypress运行测试时插件层会先备份主.env并换上.env.cypress测试结束后自动还原。整个流程由src/stubs/plugins/swap-env.js中的两个任务驱动并在src/stubs/support/index.js的before/after钩子里调用——你完全无需手动操作。 若测试失败后想在浏览器里复现现场可用php artisan serve --envcypress手动以测试环境启动服务再删除support/index.js中的自动切换任务即可。Laravel 专属命令速查安装后你可以在任何测试里直接使用以下命令源码位于src/stubs/support/laravel-commands.js命令等价于cy.login({ username: JohnDoe })auth()-login($user)找不到用户则自动用工厂创建cy.logout()auth()-logout()cy.currentUser()auth()-user()cy.create(App\Post, { title: ... })Post::factory()-create([...])cy.seed(PlansTableSeeder)php artisan db:seed --class...cy.artisan(post:make, { --title: ... })执行任意 Artisan 命令cy.refreshDatabase()migrate:refresh常放beforeEach保持库干净cy.php(App\Plan::first())执行任意 PHP 并取回结果此外cy.visit()被增强为支持按路由名访问无需手写 URLcy.visit({ route: team.dashboard, parameters: { team: 1 } });路由名列表在每次套件运行前由src/stubs/support/laravel-routes.js自动拉取并缓存也可通过Cypress.Laravel.routes属性获取完整清单。生产环境安全设计所有/__cypress__/*端点仅在非生产环境注册——服务提供者src/CypressServiceProvider.php的boot()方法开头就判断了环境production下直接返回因此这些接口永远不会在生产暴露。项目文件结构参考src/ ├── CypressBoilerplateCommand.php # 脚手架生成命令 ├── CypressServiceProvider.php # 路由注册与环境保护 ├── Controllers/CypressController.php ├── routes/cypress.php # 后端 API 端点 └── stubs/ # 复制到项目中的模板文件 ├── cypress.config.js ├── integration/example.cy.js ├── plugins/ support/小结Laracasts/Cypress 的价值在于把从 0 搭一套 Laravel Cypress 环境压缩成了 3 条命令装依赖、引入包、跑cypress:boilerplate。接下来你可以在tests/cypress/integration/下新增.cy.js文件用cy.login()模拟用户、cy.create()造数据逐步把核心用户旅程纳入自动化验收。【免费下载链接】cypressLaravel Cypress Integration项目地址: https://gitcode.com/gh_mirrors/cyp/cypress创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表