Как выполнить юнит-тестирование сущности в форме Symfony? - PullRequest
0 голосов
/ 22 февраля 2019

В Symfony 4.2 у меня есть сущность с assert:

...
/**
 * @var string
 *
 * @Assert\NotBlank()
 * @Assert\Email()
 */
private $email;
...

У меня есть форма для этой сущности:

$builder
    ...
    ->add('email', null, [
        'label' => 'label.email',
        'help' => 'email.help_privacy',
    ])
    ...

Я хочу проверить эту форму.Я прочитал документ: Как провести модульное тестирование ваших форм

Но когда я хочу проверить эту форму, Но я не знаю, как проверить утверждения .Здесь электронное письмо не завершено , пока у меня есть Notblank () assert .

public function testSubmitValidData(): void
{
    $formData = [
        'name' => 'Sheriff Woody',
        'message' => 'Hello Sheriff Woody',
    ];

    $objectToCompare = new Contact();

    $form = $this->factory->create(ContactType::class, $objectToCompare);

    $object = new Contact();
    $object->setName('Sheriff Woody');
    $object->setMessage('Hello Sheriff Woody');

    $form->submit($formData);

    $this->assertTrue($form->isSynchronized());

    $this->assertEquals(
        $object,
        $objectToCompare
    );

    $view = $form->createView();
    $children = $view->children;

    foreach (array_keys($formData) as $key) {
        $this->assertArrayHasKey(
            $key,
            $children
        );
    }
}

Но я не знаю, как проверить утверждения моей сущности.Вы можете мне помочь?

1 Ответ

0 голосов
/ 22 февраля 2019

Отказ от ответственности: я обычно использую функциональные тесты для проверки своей формы, а не для модульных тестов.

Часть подтверждения на самом деле не форма, это проверка.Вы можете протестировать его отдельно (поскольку вы выбираете TU вместо TF).

Ваша проблема задокументирована в документации :

ПРИМЕЧАНИЕНе проверяйте валидацию: она применяется слушателем, который не активен в тестовом примере и зависит от конфигурации валидации.Вместо этого проведите модульное тестирование ваших пользовательских ограничений напрямую.

Лично я не вижу смысла в модульном тестировании формы для небольшого / среднего проекта, поскольку мы можем смело предположить, что фабрика форм Symfonyхорошо работает.

...