motty/laravel-common

Laravel - 公共类和服务

v0.1.1 2015-07-03 15:52 UTC

This package is not auto-updated.

Last update: 2024-09-28 18:42:13 UTC


README

测试

这是一系列 / 特质,旨在从 Laravel 5.1 新的测试集成套件 中添加所有遗漏的部分,以便使我们的测试生活更加轻松

配置

环境参数

为了使测试辅助程序正常工作,我们需要设置以下环境参数。

FACTORIES_PATH      =   [...]
MIGRATIONS_PATH     =   [...]
MODELS_NAMESPACE    =   [...]

我们将找到以下 特质 用于我们的 TestCase

use Motty\Laravel\Common\Testing\Api;
use Motty\Laravel\Common\Testing\CleanDatabase;
use Motty\Laravel\Common\Testing\MigrateDatabase;
use Motty\Laravel\Common\Testing\ResetModelEvents;
use Motty\Laravel\Common\Testing\RelocateFactories;

class ApiTestCase extends TestCase
{
    use Api, CleanDatabase, MigrateDatabase, RelocateFactories, ResetModelEvents;
...
特质
Api

这个 特质 将提供一些方法来帮助我们进行 API 测试

// Decode as json the response from call and store it on jsonResponse object
getJson()

// Asserts that an object has a specified attributes
assertObjectHasAttributes()
CleanDatabase

用于清理数据库的方法,这将是负责在每个测试用例之前重启所有自增索引、在需要时截断表以及与准备数据库相关的所有任务的一个特定方法

我需要在每个测试用例中独立地填充数据库,然而我遇到了一个问题,即当 回滚 或使用 事务 时,我的表的自增 autoincrement 值没有重新启动

我们可以使用 Laravel 特质 DatabaseTransactions 在每个 test case 后删除所有刚刚保存的记录,但这不会重启索引数据库的表,如果您需要访问之前保存到数据库中的任何元素,这可能是必要的。

注意:目前这仅在 Postgres 数据库上工作,如果您愿意,可以提交一个 PR 来支持其他数据库

MigrateDatabase

用于根据我们的环境参数 MIGRATIONS_PATH 迁移数据库的特质

/**
 * @beforeClass
 */
public static function migrateDatabase()
{
    // migrate database according to our environment parameter MIGRATIONS_PATH
    Artisan::call('migrate', ['--path' => env('MIGRATIONS_PATH', 'database/migrations')]);
}
RelocateFactories

用于根据我们的环境参数 FACTORIES_PATH 重新定位 Factories 的特质,默认情况下 Laravel 使用位于路径 database/factories 的 factories,但是要覆盖这种行为并使用我们自己的 factories 路径并不简单。

更多信息

ResetModelEvent

用于在每个测试后重置模型的特质,以便在测试时触发 Eloquent 模型事件

为了使此 特质 工作我们需要在 TestCase 类中指定我们的模型如下:

protected $models = [
    'Contact',
    'User'
];

更多信息