Intereting Posts
Проблемы с функцией поиска php и ajax Функция mysql_query (INSERT …) не работает в моем коде Kohana 3 получает текущий контроллер / действие / аргументы mysql – Найти страницу записи результата в разбивке на страницы Воспроизведение композиций MP3 без раскрытия пути файла Symfony 3 Перенаправление всех маршрутов в текущую версию локали Как проверить и увидеть расширение изображений с помощью PHP? Использовать PHP для встраивания информации страницы src? Файлы PHP не выполняются в Windows-машине Как я могу получить адрес электронной почты пользователя и имя пользователя из кнопки входа в facebook? Публикация строки JSON на страницу PHP DOMDocument / Xpath – Как получить определенную строку из таблицы Сделайте PHP pathinfo () верните правильное имя файла, если имя файла UTF-8 Как именно PHP создает суперглобальные $ _POST, $ _GET, $ _COOKIE и $ _REQUEST? Аутентификация в функциональных тестах в Symfony 2.1

Тестирование класса, вызывающего parent :: function?

У меня есть модель, которая перегружает функцию where .

Мой перегруженный метод выглядит следующим образом:

 public function where($column, $operator = null, $value = null, $boolean = 'and') { if (in_array($column, $this->metaFields)) { $value = '%"' . $column . '":"' . $value . '"'; $column = 'meta'; $operator = 'like'; } return parent::where($column, $operator, $value, $boolean); } 

Теперь, используя phpunit и mockingery, я пытаюсь протестировать этот класс, мне нужно проверить мою перегруженную функцию, все, что мне действительно волнует, – это то, что значения передаются в parent::where()

Мой вопрос в том, возможно ли это / как бы я высмеивал родительский класс, чтобы я мог сделать

 $metaField = 'colour'; $value = 'blue'; //on the parent ->shouldReceive('where')->with(['meta', 'like', '%"colour":"blue"%'])->once(); //on the model I am testing $model->where('colour', 'blue'); 

все, что мне действительно интересно, это то, что значения передаются в parent :: where ()

Нет, нет. Это деталь реализации, о которой вам не нужно заботиться вообще с модульным тестированием. Просто расслабься.

Редактировать: Это не шутка, однако, если ваш дизайн требует этого, вы должны одобрить композицию над наследованием, чтобы вы могли фактически издеваться над этим «родителем» и вводить ее, поэтому проверяйте такое ожидание. По определению, родителем макета в насмешке является класс, поэтому родителем в этом случае является класс с перегруженным методом, а не его родительский. Вы не можете издеваться над «родителями» с издевательством (а не с какой-либо другой PHP-библиотекой, о которой я знаю).