web-chefs/laravel-app-spawn

Laravel 自定义应用程序实例引导创建器。主要用于执行 Laravel 特定测试。

1.6 2021-09-20 11:38 UTC

This package is auto-updated.

Last update: 2024-09-20 18:18:37 UTC


README

Latest Version on Packagist Software License Total Downloads

Laravel 自定义应用程序生成器主要用于在单元测试环境中创建应用程序实例,允许你在测试中与 Laravel 进行交互。

默认情况下,它将使用 SQLite 内存数据库,允许你在测试期间运行迁移并使用一个完全功能的数据库。

迁移和初始化此测试数据库由你自己负责。

安装

通过 Composer

$ composer require web-chefs/laravel-app-spawn --dev

基本用法示例

use Illuminate\Foundation\Testing\TestCase;
use WebChefs\LaraAppSpawn\ApplicationResolver;

class MyTest extends TestCase
{
    /**
     * Creates the application.
     *
     * @return \Illuminate\Foundation\Application
     */
    public function createApplication()
    {
        // Root of my app, used as a fallback for location of /database when
        // database.path in config is null.
        $appRoutePath = __DIR__;

        // Resolve Application
        $resolver  = ApplicationResolver::makeApp($appRoutePath);
        $this->app = $resolver->app();

        // Run our database migrations if required
        $this->artisan('migrate:refresh', [ '--force' => 1 ]);

        return $this->app;
    }

}

具有自定义配置的示例

use Illuminate\Support\Arr;
use Illuminate\Foundation\Testing\TestCase;
use WebChefs\LaraAppSpawn\ApplicationResolver;

class MyTest extends TestCase
{
    /**
     * Creates the application.
     *
     * @return \Illuminate\Foundation\Application
     */
    public function createApplication()
    {
        // Root of my app, used as a fallback for location of /database when
        // database.path in config is null.
        $appRoutePath = __DIR__;

        // Build Resolver config
        $config = ApplicationResolver::defaultConfig();
        Arr::set($config, 'database.connection', $this->connectionName);
        Arr::set($config, 'queue.connection', $this->connectionName);

        // Resolve Application
        $resolver  = ApplicationResolver::makeApp($appRoutePath, $config);
        $this->app = $resolver->app();

        // Run our database migrations if required
        $this->artisan('migrate:refresh', [ '--force' => 1 ]);

        return $this->app;
    }

}

TravisCI

这最初是为 WebChefs\QueueButler 开发的,用于测试使用相同测试的多个 Laravel 版本。

要了解如何实现,请参阅 WebChefs\QueueButler .travis.yml

贡献

所有代码提交将仅作为拉取请求进行评估和接受。如果您有任何问题或发现任何错误,请随时提出问题。

致谢

许可

MIT 许可证(MIT)。有关更多信息,请参阅 许可文件