Articles of mocking phpunit

Как издеваться над сервисом Symfony 2 в функциональном тесте?

У меня есть служба symfony, которая использует redis-соединение в некоторых методах, но не во всех методах. class ServiceA { private $redis; public function __construct($redis) { $this->redis = $redis; } public function getRequest($param1, $param2) { $result = $param1+ $param2; return $request; } .. other methods which use $redis connection } Я пишу функциональный тест для кода, […]

PHPUnit, посмеянные интерфейсы и instanceof

Иногда в моем коде я проверю, реализует ли конкретный объект интерфейс: if ($instance instanceof Interface) {}; Однако, создавая mocks этого интерфейса в PHPUnit, я не могу пройти этот тест. // class name is Mock_Interface_431469d7, does not pass above check $instance = $this->getMock('Interface'); Я понимаю, что наличие класса с именем Interface отличается от интерфейса, реализующего класс, […]

PHPUnit – создание объектов Mock для работы в качестве заглушек для свойств

Я пытаюсь настроить объект Mock в PHPunit, чтобы возвращать значения для разных свойств (к которым обращаются с помощью функции __get) Пример: class OriginalObject { public function __get($name){ switch($name) case "ParameterA": return "ValueA"; case "ParameterB": return "ValueB"; } } Я пытаюсь издеваться над этим, используя: $mockObject = $this->getMock("OrigionalObject"); $mockObject ->expects($this->once()) ->method('__get') ->with($this->equalTo('ParameterA')) ->will($this->returnValue("ValueA")); $mockObject ->expects($this->once()) ->method('__get') […]

Макет частного метода с помощью PHPUnit

У меня есть вопрос об использовании PHPUnit для издевательства частного метода внутри класса. Позвольте мне привести пример: class A { public function b() { // some code $this->c(); // some more code } private function c(){ // some code } } Как я могу заглушить результат частного метода, чтобы проверить еще часть кода публичной функции. […]

Mock в PHPUnit – множественная конфигурация одного и того же метода с разными аргументами

Можно ли настроить PHPUnit таким образом? $context = $this->getMockBuilder('Context') ->getMock(); $context->expects($this->any()) ->method('offsetGet') ->with('Matcher') ->will($this->returnValue(new Matcher())); $context->expects($this->any()) ->method('offsetGet') ->with('Logger') ->will($this->returnValue(new Logger())); Я использую PHPUnit 3.5.10, и он терпит неудачу, когда я запрашиваю Matcher, потому что он ожидает аргумент «Logger». Это похоже на то, что второе ожидание переписывает первый, но когда я отказываюсь от макета, все выглядит […]

phpunit mock метод несколько вызовов с разными аргументами

Есть ли способ определить разные mock-ожидания для разных входных аргументов? Например, у меня есть класс уровня базы данных, называемый DB. Этот класс имеет метод под названием «Query (string $ query)», этот метод принимает строку запроса SQL на входе. Могу ли я создать mock для этого класса (DB) и установить разные значения возврата для разных запросов […]

Как я могу заставить PHPUnit MockObjects возвращать разные значения на основе параметра?

У меня есть объект PHPUnit mock, который возвращает 'return value' независимо от его аргументов: // From inside a test… $mock = $this->getMock('myObject', 'methodToMock'); $mock->expects($this->any)) ->method('methodToMock') ->will($this->returnValue('return value')); То, что я хочу сделать, – это вернуть другое значение, основанное на аргументах, переданных методу mock. Я пробовал что-то вроде: $mock = $this->getMock('myObject', 'methodToMock'); // methodToMock('one') $mock->expects($this->any)) ->method('methodToMock') […]