motty / laravel-common
Laravel - 公共类和服务
Requires
- php: >=5.5.9
- illuminate/database: ~5.1.0
- illuminate/support: ~5.1.0
- vlucas/phpdotenv: ~1.0
Requires (Dev)
- phpunit/phpunit: ~4.0
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' ];