1 回答

TA貢獻1840條經(jīng)驗 獲得超5個贊
您的測試用例丟失,但我猜您在測試中保存的用戶與您用于設置模擬的用戶不同。為了澄清:
$userA = new User(['a' => 'b']);
$userB = new User(['c' => 'd']);
$prophecy = $this->prophesize(UserRepository::class);
$prophecy->save($userA)
->willReturn($userA)
->shouldBeCalledOnce();
$repo = $prophecy->reveal();
$repo->save($userA); // returns $userA
$repo->save($userB); // returns null
如果您的用戶存在您無法控制且不想消除的副作用,您可以使用回調(diào)來檢查給定用戶是否是您正在尋找的用戶。
$prophecy->save(Argument::that(fn(User $user) => $user->data === ['a' => 'b']))
->willReturnArgument()
->shouldBeCalledOnce();
- 1 回答
- 0 關注
- 178 瀏覽
添加回答
舉報