我试图模拟一个模型并在插入时返回false,这样我就可以测试失败的情况。
这是我的测试模拟
$mockModel = Mockery::mock(\App\Models\MyModel::class)->shouldReceive(['insertGetId'])->once()->andReturn(false);
这是我在控制器中的插入方法
$result = MyModel::insertGetId(['something' => 'somevalue',]);
dd($result);
我希望$ result为false,但我得到id(int)。
如果我删除dd();我在终端上收到此错误。
Mockery\Exception\InvalidCountException: Method insertGetId() from Mockery_0_App_Models_MyModel should be called
exactly 1 times but called 0 times.
答案 0 :(得分:0)
您正在使用 insertGetId(),它会返回插入的ID。请改用 insert()。
如果表具有自动递增ID,请使用insertGetId方法插入记录,然后检索ID,如:
$id = DB::table('users')->insertGetId(
['email' => 'john@example.com', 'votes' => 0]
);
但是在插入的情况下,它会根据查询的成功或失败返回true或false。