lukeraymonddowning/pest-plugin-larastrap

v0.3.0 2023-03-29 08:42 UTC

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 的 routeconfig 辅助函数,但它们需要 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 实例,因此您的测试运行之前数据库将被重置。因此,您应该在每个测试中执行数据库查询。