hyvor / laravel-e2e
Laravel E2E 测试助手
Requires
- php: ^8.2 || ^8.3
- doctrine/dbal: ^3.6
Requires (Dev)
- orchestra/testbench: ^9.0
- pestphp/pest: ^2.6
- phpstan/phpstan: ^1.10
This package is auto-updated.
Last update: 2024-09-03 10:49:15 UTC
README
此包收集了用于Laravel E2E测试的助手路由,支持Playwright等框架。
它向您的应用中添加以下端点,在local
和testing
环境中
POST /_testing/artisan
- 运行Artisan命令POST /_testing/truncate
- 删除所有表POST /_testing/factory
- 使用工厂创建模型POST /_testing/query
- 运行数据库查询POST /_testing/select
- 运行数据库选择查询POST /_testing/function
- 调用一个PHP函数(或静态类方法)
安装
您可以通过composer安装此包
composer require --dev hyvor/laravel-e2e
用法
JavaScript示例用法
fetch('/_testing/artisan', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(INPUT_DATA), })
运行Artisan命令
POST _testing/artisan
端点允许您在测试中运行Artisan命令。例如,您可以在每个测试前运行 php artisan migrate:fresh
。它接受两个参数
command
- 要运行的Artisan命令parameters
- 传递给命令的参数(数组/对象,可选)
{ "command": "migrate:fresh", "parameters": ["--seed"] }
此端点以JSON格式返回命令的退出代码和输出
{ "code": 0, "output": "" }
删除所有表
在小型数据库中,删除表比运行 migrate:fresh
命令更快。您可以使用 POST /_testing/truncate
端点删除所有表。它接受一个可选的 connections
参数来删除特定连接的表。如果未设置 connections
参数,则删除默认连接的表。
{ "connections": [] // optional }
使用工厂创建模型
您可以使用 POST /_testing/factory
端点使用工厂创建模型。它接受以下参数
model
- 模型类名(如果模型类名以App\Models\
开头,则可以省略它)count
- 要创建的模型数量(可选,默认:1)。如果设置count(即使为1),则返回一个包含模型的数组。否则,返回一个单个模型。attributes
- 要设置的属性(可选)
以下示例创建一个具有 name
属性设置为 John Doe
的单个 App\Models\User
模型,并以JSON格式返回它
{ "model": "User", "attributes": { "name": "John Doe" } }
以下示例创建5个 App\Database\Models\User
模型,并以JSON格式作为数组返回它们
{ "model": "App\\Database\\Models\\User", "count": 5 }
运行数据库查询
您可以使用 POST /_testing/query
端点运行数据库查询。它接受以下参数
query
- 要运行的查询connection
- 要使用的数据库连接(可选)
{ "query": "UPDATE users SET name = 'John Doe' WHERE id = 1", "connection": "mysql" }
运行数据库选择查询
您可以使用 POST /_testing/select
端点运行数据库选择查询。它接受以下参数
query
- 要运行的查询connection
- 要使用的数据库连接(可选)
它以JSON格式返回结果,结果为对象数组。
{ "query": "SELECT * FROM users WHERE id = 1", "connection": "mysql" }
调用PHP函数或静态类方法
使用 POST /_testing/function
端点调用PHP函数或静态类方法。它接受以下参数
function
- 要调用的函数名args
- 传递给函数的参数数组
函数的返回值将以JSON编码的形式从该端点返回。
示例
参数作为数组
{ "function": "fullName", "args": ["Supun", "Wimalasena"] }
这调用了一个名为 fullName
的函数,并带有两个参数。
命名参数
{ "function": "fullName", "args": { "first": "Supun", "last": "Wimalasena" } }
静态方法
{ "function": "namespace\\class::method", "args": [] }