paasky/laravel-model-test

测试 Eloquent 模型实例和关系

v0.1.6 2023-05-06 11:25 UTC

This package is auto-updated.

Last update: 2024-09-06 14:38:09 UTC


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] = ['*'];