jasonmccreary / laravel-test-assertions
一组在测试 Laravel 应用程序时非常有用的断言。
Requires
- php: ^8.1
- illuminate/testing: ^10.0|^11.0
- mockery/mockery: ^1.4.4
- phpunit/phpunit: ^10.1|^11.0
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 未来版本的更改。