Имеется класс контроллера cabinet_conrtoller c методом index():
class cabinet_controller
{
...
public function index()
{
...
$users = new users_model();
$user = $users->get(array('id'=>$_SESSION['user_id']));
...
}
...
}
Соответственно, хочется протестировать его так, чтобы не пришлось создавать экземпляр модели users_model, а каким-то образом "подменить" его (чтобы не пришлось подключаться к настоящей базе и вообще абстрагироваться от классов модели в принципе).
Читал про моки в phpUnit, но во всех примерах созданный мок явным образом передается в метод класса, который мы тестируем. Что-то в духе:
public function testIndex()
{
$users_model = $this->getMock('users_model');
$users_model->expects($this->any())
->method('get')
->will($this->returnValue(array(...));
$cabinet_controller = new cabinet_controller();
$cabinet_controller->index($users_model);
}
А как быть, если экземпляр класса создается в самом тестируемом методе?
И вообще, прав ли я тестируя контроллеры таким образом?