【问题标题】:Mock Laravel Eloquent save() method模拟 Laravel Eloquent save() 方法
【发布时间】:2021-10-21 06:59:06
【问题描述】:

假设你有一个控制器或一些看起来像这样的代码:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;

class TeamController {

    public function create(Request $request): JsonResponse
    {
        $request->validated();

        $team = new Team(['name' => $request->get('name')]);
        if (!$team->save()) {
            // some really important logic you want to cover
            // cover by a test.
        }

        ...
    }

}

你不能轻易地模拟 Eloquent 模型而不会有点混乱,请参阅我关于如何从 save() 调用中返回 false 的回答。

【问题讨论】:

    标签: laravel testing eloquent model


    【解决方案1】:

    在您的测试中只需调用:

    Team::saving(fn () => false);
    

    您对 save() 的调用现在将返回 false,以便您覆盖该代码流。

    【讨论】:

      猜你喜欢
      • 2016-03-30
      • 2016-09-24
      • 2015-03-12
      • 1970-01-01
      • 2014-11-05
      • 2021-09-08
      • 2013-11-19
      • 2013-09-13
      • 2016-08-17
      相关资源
      最近更新 更多