Laravel Тестирование TDD Сервисный контейнер - PullRequest
0 голосов
/ 12 января 2020

я запускаю laravel тестирование phpunit, но всегда говорится, что таблица не найдена при использовании сервисного контейнера, я использую соединение sqlite, база данных ": memory:"

<?php


class AuthServiceProvider extends ServiceProvider
{
    /**
     * Indicates if loading of the provider is deferred.
     *
     * @var bool
     */
    protected $defer = false;

    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        'App\Model' => 'App\Policies\ModelPolicy',
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerAllModule();

        //
    }

    public function registerAllModule()
    {
        $acl = resolve(\Gdevilbat\SpardaCMS\Modules\Role\Repositories\Contract\AuthenticationRepository::class);

        if(!Schema::hasTable('module'))
            return true;

       $modules = Module_m::get();

       foreach ($modules as $module) 
       {
            if(!empty($module->scope))
            {
                   foreach ($module->scope as $key => $value) 
                   {
                        $authentication = $value.'-'.$module->slug;
                        Gate::define($authentication, function ($user, $model = null) use ($value, $module, $modules, $acl){
                            return $acl->getAuthenticationRule($value, $module, $modules, $model, $user);
                        });
                   }
            }
       }


    }


}

<?php


/**
 * Class EloquentCoreRepository
 *
 * @package Gdevilbat\SpardaCMS\Modules\Core\Repositories\Eloquent
 */
class SingleBrandAuthentication implements \Gdevilbat\SpardaCMS\Modules\Role\Repositories\Contract\AuthenticationRepository
{
    public function getAuthenticationRule(string $value, \Gdevilbat\SpardaCMS\Modules\Core\Entities\Module $module, \Illuminate\Database\Eloquent\Collection $modules, \Illuminate\Database\Eloquent\Model $model = null, \App\User $user): bool
    {
        $role_user = RoleUser_m::with(['role.modules' => function($query) use ($module){
                                                        $query->where(Module_m::getTableName().'.'.Module_m::getPrimaryKey(), $module->getKey());
                                                    }])
                                                    ->where('user_id', $user->id)
                                                    ->first();

        if(empty($role_user))
            abort(403, "User Doesn't Have Role");

        $scope = $role_user->role->hasAccess($value, $module->slug, $modules);

        if(!empty($model))
        {
            if(!in_array($value, config('role.exclude_permission_id')))
                return $scope || ($user->id == $model->created_by);
        }

        return $scope;
    }
}

Я всегда получаю сообщение об ошибке типа «роль_пользователя не найдена». Это происходит только тогда, когда я использую модель в сервисном контейнере.

Я тестирую другой контроллер, использующий ролевую модель, и проблем нет, но когда я использую модель в сервисном контейнере. всегда говорилось, что таблица не найдена

помогите мне, пожалуйста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...