Макет модели Laravel
Я пытаюсь смоделировать модель и вернуть false при вставке, чтобы я мог проверить случай сбоя.
вот мой тест издевательский
$mockModel = Mockery::mock(\App\Models\MyModel::class)->shouldReceive(['insertGetId'])->once()->andReturn(false);
и вот мой метод вставки в контроллере
$result = MyModel::insertGetId(['something' => 'somevalue',]);
dd($result);
и я ожидаю, что $ результат будет ложным, но вместо этого я получаю идентификатор (int).
если я удалю dd(); я получаю эту ошибку на терминале.
Mockery\Exception\InvalidCountException: Method insertGetId() from Mockery_0_App_Models_MyModel should be called
exactly 1 times but called 0 times.
1 ответ
Вы используете insertGetId(), который возвращает вставленный идентификатор. Вместо этого используйте insert().
Если таблица имеет автоматически увеличивающийся идентификатор, используйте метод insertGetId, чтобы вставить запись, а затем получить идентификатор, например:
$id = DB::table('users')->insertGetId(
['email' => 'john@example.com', 'votes' => 0]
);
но в случае вставки он возвращает истину или ложь в зависимости от успеха или неудачи запроса.