hyvor/laravel-e2e

Laravel E2E 测试助手

1.0.1 2024-08-03 10:33 UTC

This package is auto-updated.

Last update: 2024-09-03 10:49:15 UTC


README

此包收集了用于Laravel E2E测试的助手路由,支持Playwright等框架。

它向您的应用中添加以下端点,在localtesting环境中

  • 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": []
}