I am trying to mock a model and return false on insert so i can test failure case.
here is my test mocking
$mockModel = Mockery::mock(\App\Models\MyModel::class)->shouldReceive(['insertGetId'])->once()->andReturn(false);
and here is my insert method in controller
$result = MyModel::insertGetId(['something' => 'somevalue',]);
dd($result);
and i am expecting $result to be false but instead i get the id (int).
if i remove dd(); i get this error on the terminal.
Mockery\Exception\InvalidCountException: Method insertGetId() from Mockery_0_App_Models_MyModel should be called
exactly 1 times but called 0 times.
You are using insertGetId() which returns the inserted id. Use insert() instead.
If the table has an auto-incrementing id, use the insertGetId method to insert a record and then retrieve the ID like:
but in case of insert it return true or false based on success or failure of query.