paasky / laravel-model-test
测试 Eloquent 模型实例和关系
v0.1.6
2023-05-06 11:25 UTC
Requires
- php: >=7.2
- laravel/framework: >=6
- phpunit/phpunit: >=8
- roave/better-reflection: >=6
- wyrihaximus/list-classes-in-directory: >=1.5
README
特质,用于测试您的 Laravel 模型是否为正确类别的实例,以及所有关系是否正常工作
安装
composer require paasky/laravel-model-test --dev
使用方法
在任何 PHPUnit 测试中
use Paasky\TestsModels;
class MyTest extends TestCase
{
use RefreshDatabase, TestsModels;
public function testModels()
{
$this->assertModels();
}
}
配置
配置是 TestsModels-Trait 的公共属性
modelPaths
用于查找模型类的完整路径,包括子文件夹。
默认: [app_path('Models')]
$this->modelPaths = [app_path('Models'), app_path('SuperCoolModels')];
- 提示:如果您的模型直接在
app
中,您可以跳过自动发现,并将类数组传递给assertModels()
$this->assertModels([User::class, SomethingElse::class, ...]);
allowedInstances
找到的类可以实例化的类。如果您的项目有一个自定义的 Model 类,则很有用。
默认: [Model::class]
$this->allowedInstances = [ProjectModel::class];
allowNonModels
跳过或失败不是 Illuminate\Database\Eloquent\Model
实例的类
默认: false
(失败)
$this->allowNonModels = true;
requiredInstancePerModel
通过设置所需实例覆盖特定类的 allowedInstances
默认: ['App\User' => Authenticatable::class, 'App\Models\User' => Authenticatable::class]
$this->requiredInstancePerModel[SimpleUser::class] = Model::class;
ignoreMethodsPerNamespace
忽略这些方法进行验证,当包没有类型提示返回类型并且失败时很有用
使用 '*'
忽略命名空间中的所有方法
默认: ['Illuminate\\' => ['*']
$this->ignoreMethodsPerNamespace['SomeDude\\Package\\'] = ['dumbMethod'];
enableBackRelationValidation
是否应该验证反向关系(例如,User 有 Post,因此 Post 必须有 User)
默认: true
$this->enableBackRelationValidation = false;
enableBackRelationTypeValidation
是否应该验证反向关系返回类型(例如,User HasMany Posts,因此 Post 必须 BelongTo User)
默认: true
$this->enableBackRelationTypeValidation = false;
skipBackRelationMethodsValidationPerModel
要跳过的反向关系验证方法
使用 '*'
忽略类的所有方法
默认: ['App\User' => ['tokens'], 'App\Models\User' => ['tokens']]
$this->skipBackRelationMethodsValidationPerModel[PivotModel::class] = ['*'];