lukeraymonddowning / pest-plugin-larastrap
我的优秀插件
Requires
- php: ^8.1 || ^8.2
- pestphp/pest-plugin: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.15
- laravel/framework: ^10.0
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-dev-tools: ^2.0
This package is auto-updated.
Last update: 2024-08-29 11:33:05 UTC
README
这是一个目前高度实验性的项目,可能会进行大量的预发布更改。
Pest PHP 是一个优秀的 PHP 测试框架。它已经通过 Laravel 插件 提供了对 Laravel 的惊人支持!然而,由于 Laravel 在 Pest 编译阶段尚未启动,因此在使用 Pest 和 Laravel 时,有时会遇到一些奇怪的问题。以下是一个使用 高阶测试 的示例
it('points to the correct URL') ->expect(route('dashboard')) ->toBe(config('app.url').'/dashboard');
如果您直接运行此测试,它将失败;我们正在尝试使用 Laravel 的 route
和 config
辅助函数,但它们需要 Laravel 应用程序启动。
进入 Larastrap。安装此插件后,上述测试将正常运行,您可以继续测试而无需烦恼!
安装
您可以通过 composer 安装 Larastrap
composer require --dev lukeraymonddowning/pest-plugin-larastrap
它将自动注册,因此您可以立即开始使用它!
先决条件
使用 Larastrap 的唯一先决条件是在您的应用程序 tests
文件夹中有一个 CreatesApplication
特性。您几乎肯定已经有了这个特性,因为它与 Laravel 一起发货。该特性应包含一个 createApplication
方法。如果您不知道我们在说什么,那么一切都很正常,您可以跳过本节。
常见用例
我们已经强调了 Larastrap 在高阶测试中的超有用性。
it('can access the dashboard') ->get(route('dashboard')) ->assertOk();
另一个它很有用的地方是数据集。传统上,您无法在数据集中使用 Laravel。然而,使用 Larastrap,您就可以轻松地使用 Laravel 的全部功能。例如,也许您想检查您的 app.php
配置文件中是否包含所有服务提供者
dataset('laravel service providers', function () { yield from config('app.providers'); });
现在,我们有一个动态更新的提供者字符串数组,我们可以在任何测试中使用它。
也许我们想要一个特定路由注册的中介件的数据集
dataset('admin panel middleware', function () { return Route::gatherRouteMiddleware(Route::getRoutes()->getByName('admin.dashboard'))); });
您可以看到这个概念是多么强大;它打开了完全动态数据集的可能性,这些数据集可以自动随着您的应用程序增长。
注意事项
在您使用 Larastrap 时,您应该注意一些注意事项和限制。
您不应该在测试之外使用数据库
由于 Larastrap 在任何测试运行之前都会启动自己的 Laravel 实例,因此您的测试运行之前数据库将被重置。因此,您应该在每个测试中执行数据库查询。