jasonmccreary/laravel-test-assertions

一组在测试 Laravel 应用程序时非常有用的断言。

v2.4.1 2024-06-10 14:00 UTC

This package is auto-updated.

Last update: 2024-09-10 14:26:09 UTC


README

一组在测试 Laravel 应用程序时非常有用的断言。

要求

您的应用程序必须运行最新的 LTS 版本(5.5)或更高版本,并使用 Laravel 的测试工具

安装

您可以通过运行以下命令使用 Composer 安装这些断言:

composer require --dev jasonmccreary/laravel-test-assertions

之后,将特质添加到您的基 TestCase 类中

<?php
namespace Tests;

use JMac\Testing\Traits\AdditionalAssertions;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;

abstract class TestCase extends BaseTestCase
{
    use CreatesApplication, AdditionalAssertions;
}

断言

此包添加了几个在编写 Http 测试 时非常有用的断言。

assertActionUsesFormRequest(string $controller, string $method, string $form_request)

验证给定控制器的 action 使用给定的表单请求进行验证。

assertRouteUsesFormRequest(string $routeName, string $formRequest)

验证给定 route name 对应的 action/controller 使用给定的表单请求进行验证。

assertActionUsesMiddleware(string $controller, string $method, string|array $middleware)

验证给定控制器的 action 使用给定的中间件或中间件集合。

assertRouteUsesMiddleware(string $routeName, array $middlewares, bool $exact)

验证给定路由名称的 route 使用所有给定的中间件或仅使用给定的中间件集合。

assertValidationRules(array $expected, array $actual)

验证字段期望的验证规则子集在验证规则集合中。规则可以是分隔的字符串或数组。

assertExactValidationRules(array $expected, array $actual)

验证字段期望的验证规则集合与验证规则集合完全匹配。规则可以是分隔的字符串或数组。

assertValidationRuleContains($rule, string $class)

验证规则或规则包含给定 Rule 类的实例。

匹配器

LaravelMatchers::isModel(Model $model = null)

匹配参数 $model 相同。当没有调用 $model 时,将匹配任何类型的 Illuminate\Database\Eloquent\Model 参数。

LaravelMatchers::isCollection(Collection $collection = null)

匹配参数 equals $collection。当没有调用 $collection 时,将匹配任何类型的 Illuminate\Support\Collection 参数。

LaravelMatchers::isEloquentCollection(Collection $collection = null)

匹配参数 equals $collection。当没有调用 $collection 时,将匹配任何类型的 \Illuminate\Database\Eloquent\Collection 参数。

创建方法

此包还提供了一些用于快速创建 Laravel 应用程序中常用的对象的方法,以便在测试时使用。

createFormRequest(string $class, array $data = [])

使用给定的请求数据创建给定 Form Request 类的实例。

支持策略

从版本 2 开始,此包将仅支持 Laravel 的最新稳定版本(目前为 Laravel 8)。如果您需要支持旧版本的 Laravel,可以使用版本 1 或升级您的应用程序(尝试使用 Shift)。

此包仍然遵循 语义版本化。但是,它尊重自己的代码。任何重大更改将增加其主版本号。否则,次要版本号的增加将包含新功能。这包括对 Laravel 未来版本的更改。