У меня есть класс, который мне нужно высмеять: class MessagePublisher { /** * @param \PhpAmqpLib\Message\AMQPMessage $msg * @param string $exchange – if not provided then one passed in constructor is used * @param string $routing_key * @param bool $mandatory * @param bool $immediate * @param null $ticket */ public function publish(AMQPMessage $msg, $exchange = "", […]
Это связано с этим вопросом , но после этого решения не удалось решить мою проблему. Я также понимаю, что в собственной документации Laravel говорится, что вы не должны издеваться над объектом Request , но я не уверен, как еще писать этот тест. Вот видимость кода, который я хочу проверить: public function getThirdSegment() { return Request::segment(3); […]
Я новичок в модульном тестировании и PHPUnit. Мне нужен макет, на котором у меня есть полный контроль, реализующий интерфейс ConfigurationInterface . Объектом тестирования является объект ReportEventParamConverter и тест должен проверять взаимодействие между моим объектом и интерфейсом. Объект ReportEventParamConverter (здесь упрощенный): class ReportEventParamConverter implements ParamConverterInterface { /** * @param Request $request * @param ConfigurationInterface $configuration */ […]
У меня возникла странная проблема с объектами PHPUnit mock. У меня есть метод, который следует вызывать дважды, поэтому я использую «at» matcher. Это работает в первый раз, когда метод вызывается, но по какой-то причине второй раз он называется, я получаю «Mocked method does not exist.». Раньше я использовал совпадение «at» и никогда не сталкивался с […]
Я хочу протестировать метод класса, который вызывает родительский метод с тем же именем. Есть ли способ сделать это? class Parent { function foo() { echo 'bar'; } } class Child { function foo() { $foo = parent::foo(); return $foo; } } class ChildTest extend PHPUnit_TestCase { function testFoo() { $mock = $this->getMock('Child', array('foo')); //how do […]
Я пытаюсь высмеять final class php, но поскольку он объявлен final я продолжаю получать эту ошибку: PHPUnit_Framework_Exception: Class "Doctrine\ORM\Query" is declared "final" and cannot be mocked. Нужно ли вообще обойти это final поведение только для моих модульных тестов без введения каких-либо новых фреймворков?
Я пишу модульный тест для существующего кода, который подобен этому class someClass { public function __construct() { … } public function someFoo($var) { … $var = "something"; … $model = new someClass(); model->someOtherFoo($var); } public someOtherFoo($var){ // some code which has to be mocked } } Здесь, как мне быть в состоянии издеваться над вызовом […]
Я должен что-то упустить. Я пытаюсь использовать методы stub в классе в PHPUnit, но когда я вызываю метод на объект mock, он сообщает мне, что метод не определен. Пример класса для заглушки: namespace MyApp; class MyStubClass { public function mrMethod() { // doing stuff } } Чтобы его заглушить, я пишу: // specifying all getMock() […]
Есть ли хорошие способы издеваться над конкретными методами в абстрактных классах с использованием PHPUnit? То, что я нашел до сих пор: expects () -> will () отлично работает с использованием абстрактных методов Это не работает для конкретных методов. Вместо этого выполняется исходный метод. Использование mockbuilder и предоставление всех абстрактных методов и конкретного метода setMethods () […]
Это может показаться глупым, надеюсь, что нет, но я хочу создать службу, которая вернет макеты для людей, которые используют мой проект, чтобы они могли издеваться над всеми классами из моего проекта и проверить их код. Моя идея заключалась в том, чтобы предложить такой сервис, чтобы его можно было вызывать в тестовых случаях другого проекта и […]