anlutro/l4-testing

Laravel 4 的基础 PHPUnit 类。

0.2.9 2018-04-10 20:41 UTC

This package is auto-updated.

Last update: 2024-09-24 09:33:33 UTC


README

安装: composer require anlutro/l4-testing

从 Packagist 或 GitHub 标签列表中选择最新稳定版本。

PkgAppTestCase

如果您正在编写具有路由、视图、事件监听器、视图编译器等的大量包,这个测试用例适合您。这个测试用例基本上使用默认的 Laravel 安装,允许您在顶部添加您包的服务提供者,然后您就有了一个像在常规 Laravel 应用程序中一样完全功能的测试用例 - 除了它是在一个包中。

class MyTest extends \anlutro\LaravelTesting\PkgAppTestCase { }

为了使这个测试用例正常工作,您需要在包的 composer.json 的 "require-dev" 中要求 laravel/laravel 包。测试用例有一个抽象方法 getVendorPath,其含义如字面意思。

getExtraProviders 方法应返回一个包含字符串的数组,这些字符串包含您的包需要除默认 Laravel 之外以正常工作所需的所有服务提供者的完全限定类名。

EloquentTestCase

用于测试 Eloquent 模型的独立测试。

class MyTest extends \anlutro\LaravelTesting\EloquentTestCase { }

默认使用 sqlite 内存数据库,但您可以通过覆盖 getDatabaseConfig() 来配置此设置。受保护的 getMigrationsgetSeeders 方法可以在每个测试之前运行迁移和种子。这些方法应返回一个字符串数组,包含上述迁移和种子器的完全限定类名。您负责确保这些是通过 composer 自动加载,或者在您的测试中手动要求。

如果您想在测试中使用事件或缓存,可以将 protected $enableEventsprotected $enableCache 设置为 true。

如果您需要将一些额外的内容提供给外观(例如散列器),您可以将它手动添加到 $this->container 中。例如,要使 Hash::make 可用于测试环境,请在您的 setUp 方法中添加以下内容

parent::setUp();
$this->container->bindShared('hash', function() {
    return new \Illuminate\Hashing\BcryptHasher;
});

请注意,虽然在一个正常的 Laravel 应用程序中,所有外观都可在全局命名空间中找到。在隔离环境中并非如此。已经努力使最常用的 Eloquent 相关外观在全局范围内可用,但仍有一些可能不可用。为了解决这个问题,只需在 app/config/app.php 下的 "aliases" 中查找类的真实名称,然后在您的模型类顶部添加一个 use 语句来导入此类。

L4TestCase

基本上是默认 Laravel TestCase 的改进。

class MyTest extends \anlutro\LaravelTesting\L4TestCase { }

在您的测试类上设置 protected $controller = 'MyController',您就可以访问一些快捷方式,如 $this->getAction('show', [1]),这将扩展为 $this->call('get', URL::action('MyController@show', [1]))。这同样适用于 assertRedirectedToAction

$this->assertRouteHasFilter() 可用于断言之前调用的路由具有某个特定过滤器。请注意,这仅适用于在 routes.php 中定义的过滤器,而不是在控制器构造函数中定义的过滤器。

联系

如果您有任何问题或建议,请在 GitHub 上创建一个问题。

许可证

此存储库的内容在MIT 许可证下发布。