Невозможно обновить данные Eloquent в Laravel, phpunit - PullRequest
0 голосов
/ 23 сентября 2019

Я занимаюсь разработкой приложения с использованием Laravel, Eloquent как ORM, phpunit для модульного тестирования.Но я не могу обновить данные в базе данных.Хотя нет исключений, предупреждений или ошибок.Если объект класса модели проверен в laravel, до обновления и после обновления он показывает, что данные были изменены в классе модели, но при проверке базы данных обнаружил, что данные не изменяются.

Класс модели

class Post extends Model
{
    protected $table = "posts";

    protected $fillable = [
        'id',
        'user_id',
        'title',
        'description',
        'total_needed',
        'total_collected',
        'total_expanse',
        'start_date',
        'end_date',
        'active',
        'updated_at',
        'created_at',
    ];
}//class

Код репозитория

class Post_Repo_Impl implements Post_Repo_I
{
    public function update(Post $postUpdate)
    {
        $raedOld = false;
        $updateStatus = false;
        try {
            $psot_id = $postUpdate->id;
            $postOrgin = Post::find($psot_id);
            $raedOld = true;
        } catch (Exception $e) {
            error_log("Post Update : failed to read existig post.");
        }
        if ($raedOld) {
            try {
                 //line 1
                echo "\n" . $postOrgin->title . "\n";
                $this->setPostValues($postOrgin, $postUpdate)->update();
                 //line 2
                echo "\n" . $postOrgin->title . "\n";
                $updateStatus = true;
            } catch (Exception $e) {
                error_log("Post Update : Failed to save updated post." . "\n\n" . $e);
            }
        }
        return  $updateStatus;
    } //update
}

Строка 1 и Строка 2, без печати одинакового значения,Строка 2 печатает измененное значение.

Код юнит-теста

class RepoPost extends TestCase
{
    public function testMain()
    {
        echo "\n >----------- Test Main : ---------> \n";
        $this->postUpdate();
    } //mother test

    public function postUpdate()
    {
        $postDummyUpdate = new Post();
        $postDummyUpdate->id = '2';
        $postDummyUpdate->user_id = 'Tst';
        $postDummyUpdate->title = 'Post Updated Repo Test........';
        $postDummyUpdate->description = 'UnitTesting of URLs';
        $postDummyUpdate->total_needed = '2000';
        $postDummyUpdate->total_collected = '1000';
        $postDummyUpdate->total_expanse = '500';
        $postDummyUpdate->start_date = '22-09-2019';
        $postDummyUpdate->end_date = '22-10-2019';
        $postDummyUpdate->active = '1';
        $postDummyUpdate->updated_at = '2019-09-24';
        $postDummyUpdate->created_at = '2019-09-22';

        echo '\n----PostUpdate----\n';
        $postRepoSave = $this->getRepoPostImpl();
        dd($postRepoSave->update($postDummyUpdate));
        if ($postRepoSave == false) {
            error_log("\n\nTest : Data Save Failed.");
        } else {
            error_log("Saved Post ID : " . $postRepoSave);
        }
    }

    public function getRepoPostImpl()
    {
        return new Post_Repo_Impl();
    }
}

В тестовом коде возвращается значение true.

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