Я хочу использовать mock-объект (Mockery) в моем тесте PHPUnit. Объект mock должен иметь как некоторые общедоступные методы, так и некоторые общедоступные свойства. Класс - это модель Laravel Eloquent. Я пробовал это:
$mock = Mockery::mock('User');
$mock->shouldReceive('hasRole')->once()->andReturn(true); //works fine
$mock->roles = 2; //how to do this? currently returns an error
$this->assertTrue(someTest($mock));
... но установка публичного свойства возвращает эту ошибку:
BadMethodCallException: метод Mockery_0_User:: setAttribute() не существует в этом макетном объекте
Эта ошибка не возвращается при издевательстве простого класса, но возвращается, когда я пытаюсь высмеять модель Eloquent. Что я делаю неправильно?