Articles of unit testing

Вымысел конкретного метода в абстрактном классе с использованием phpunit

Есть ли хорошие способы издеваться над конкретными методами в абстрактных классах с использованием PHPUnit? То, что я нашел до сих пор: expects () -> will () отлично работает с использованием абстрактных методов Это не работает для конкретных методов. Вместо этого выполняется исходный метод. Использование mockbuilder и предоставление всех абстрактных методов и конкретного метода setMethods () […]

Возможно ли создать фальшь вне тестового примера в PhpUnit?

Это может показаться глупым, надеюсь, что нет, но я хочу создать службу, которая вернет макеты для людей, которые используют мой проект, чтобы они могли издеваться над всеми классами из моего проекта и проверить их код. Моя идея заключалась в том, чтобы предложить такой сервис, чтобы его можно было вызывать в тестовых случаях другого проекта и […]

Зависимые тесты между двумя классами TestCase в PHPUnit

В PHPUnit вы можете сделать один тест зависимым от другого теста, используя аннотацию @depends . Можно ли сделать целую TestCase зависимой от теста в другой TestCase? Или, по крайней мере, сделать один тест в одной тестовой камере, зависящей от теста в другой TestCase? Я пытался: /** * @depends A::testMethodName */ Но, как я и ожидал, […]

Как издеваться над сервисом 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 отличается от интерфейса, реализующего класс, […]

Агенты для тестирования модулей (геттеры и сеттеры)

Учитывая следующие методы: public function setFoo($foo) { $this->_foo = $foo; return $this; } public function getFoo() { return $this->_foo; } Предполагая, что в будущем они могут быть более сложными: Как бы вы написали модульные тесты для этих методов? Только один метод тестирования? Должен ли я пропустить эти тесты? Как насчет покрытия кода? Как насчет аннотации […]

Что делает режим PHPUnit Strict?

Мне интересно, что такое «строгий режим в PHPUnit»? например: phpunit –strict или в phpunit.xml <phpunit strict="true"> Я включил его, чтобы попробовать, и мои тесты начали сбой с PHP_Invoker_TimeoutException: Execution aborted after 1 second

Инъекция зависимостей Laravel: когда вам нужно? Когда вы можете издеваться над фасадами? Преимущества любого метода?

Я использую Laravel какое-то время, и я много читал об Injection Dependency – тестируемый код. Я пришел в замешательство, когда говорил о Фасадах и посмеянных предметах. Я вижу два шаблона: class Post extends Eloquent { protected $guarded = array(); public static $rules = array(); } Это моя модель публикации. Я мог бы запустить Post::all(); чтобы […]

Агрегирование покрытия кода из нескольких исполнений PHPUnit

Я работаю с PHPUnit на некоторое время, и теперь все выглядит так, как будто мне может потребоваться разбить тесты на группы, которые будут выполняться как отдельные исполнения phpunit . Основная причина этого заключается в том, что большинство моих тестов нужно запускать в отдельных процессах, в то время как некоторые из них фактически не могут выполняться […]

Запуск тестов PHPUnit в определенном порядке

Есть ли способ получить тесты внутри TestCase для запуска в определенном порядке? Например, я хочу отделить жизненный цикл объекта от создания, чтобы использовать его для уничтожения, но мне нужно убедиться, что объект настроен первым, прежде чем запускать другие тесты.