@jrdavidson It’s because you’re mocking too much. You’re mocking the repository, but then trying to mock the repository’s implementation itself. You don’t need to. If the repository is mocked, then nothing in it is going to get called, so you don’t need to mock any of the classes it uses, like the model.
This is why you’re getting the “no expectations were specified” error. The player model mock never gets invoked, because the class that calls it (the repository) is mocked itself.
Mock the repository and then just mock any methods you expect to be called on that repository.
$repository = $this->mock(PlayerRepository::class);
$repository->shouldReceive('clearInjury')->once()->with($player, $recoveryDate)->andReturn($player);
// Call repository; mocked method will be invoked instead
$repository->clearInjury($player, $recoverDate);