#laravel #testing #eloquent #model
Вопрос:
Представьте, что у вас есть контроллер или какой-то код, который выглядит примерно так:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateHttpJsonResponse;
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.
}
...
}
}
Вы не можете легко высмеять Красноречивую модель, не будучи немного запутанным, см. Мой ответ о том, как вернуть false из вызова save ().
Ответ №1:
В своем тесте просто позвоните:
Team::saving(fn () => false);
и ваш вызов функции save() теперь вернет false, что позволит вам покрыть этот поток кода.