Задать вопрос
artymail
@artymail

Как протестировать класс, который использует объект Silex?

Всем, привет.

Столкнулся с проблемой написания юнит-тестов для классов, которые используют объект фреймворка Silex. Не могу сообразить как написать mock для него.

Имею класс:
class ProjectHelper
{
    private $app;

    function __construct ( Application $app )
    {
        $this -> app = $app;
    }

    public function GetProjectList ()
    {
        ...
        $row = $this -> app['db'] -> fetchAll ( $query );
        ...
    }
}


Хочу протестировать метод GetProjectList, соответственно нужно ему подсунуть мок на app['db'] -> fetchAll (), но как именно это сделать?

Такой вариант не хочет работать:
$appMock = $this -> getMockBuilder ( 'Silex\Application' )
            -> disableOriginalConstructor ()
            -> getMock ();

        $appMock -> expects ( $this -> once () )
            -> method ( 'fetchAll' )
            -> will ( $this -> returnValue ( 1 ) );


PHPUnit выдает ошибку:
Trying to configure method "fetchAll" which cannot be configured because it does not exist, has not been specified, is final, or is static
  • Вопрос задан
  • 225 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Skillbox
    PHP-разработчик. Базовый уровень
    3 месяца
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы