PHPUnit издеваться быстрее и не повторять код

Я хотел бы спросить вас о вашей практике написания модульных тестов, как смоделировать объект и не повторять код?

Я использую платформу Symfony2 и, например, у меня есть много пакетов с пользовательскими валидаторами. Когда я и остальная часть моей команды пишем юнит-тест, мы повторяем код насмешливых Constraint, ExecutionContext, ConstraintViolationBuilderInterface. Я знаю, что мы можем создать специальный или абстрактный класс или что-то еще, где мы можем хранить код, ответственный за макет, но прежде чем я начну это делать, мне бы хотелось узнать ваши лучшие практики.

Моей первой идеей было создать класс / черту, которая будет хранить, например, макет всех репозиториев. Пример:

class MockRepositoryHelper extends \PHPUnit_Framework_TestCase
{
public function getUserRepositoryMock()
{
return $this->prophesize(UserRepository::class);
}

// next repositories getters
}

а затем использовать этот код в реальном тестовом примере:

class EmailValidator extends \PHPUnit_Framework_TestCase
{
private $mockRepositoryHelper;

public function setUp()
{
parent::setUp();
$this->mockRepositoryHelper = new MockRepositoryHelper();
}

/**
* @test
*/
public function it_should_find_user()
{
$userRepository = $this->mockRepositoryHelper->getUserReposioryMock();
$userRepository->findUser(Argument::type('string'))->willReturn(null);

// rest of the test
}
}

Конечно, это только псевдокод, о котором я думал, моя первая мысль. Какие у тебя идеи?

В основном я спрашиваю, как написать модульный тест быстрее и не повторять код?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]