Подтвердить что ты не робот

Как настроить инструменты Doctrine2 при тестировании с помощью PHPUnit?

Я пытаюсь начать работу с Symfony2 и пытаюсь настроить автоматическое тестирование для слоя модели моего приложения. В книге Symfony2 говорится об модульном тестировании контроллеров, но я не могу найти много примеров тестирования модели.

Я хотел бы иметь чистый набор данных для работы до того, как каждый тест пройдет и найдет эти статьи:

На основе статьи sznapka.pl у меня есть тест, фактически выполняющийся без ошибок, но, несмотря на то, что тестовая схема создана, приборы не загружаются. Я не понимаю, почему, или даже способ отладить это.

Предыстория: Я ранее работал с CakePHP, где загрузка светильников в основном обрабатывается автоматически, возможно, у меня неправильный подход для Symfony/Doctrine?

4b9b3361

Ответ 1

Да DoctrineFixtures - хороший выбор.

Для тестирования модели: вам не нужно загружать светильники в базу данных, вы должны создавать объекты с нужными вам данными (путем ввода их сеттерами).

Чтобы протестировать контроллер: загрузить доктрины и использовать транзакции доктрины, чтобы состояние вашей базы данных было прежним каждый тестовый ввод, начать транзакцию в setUp() и откат в tearDow(). (Если ваш контроллер также использует транзакции, я еще не нашел хорошего решения).

Если ошибка устройства отсутствует, если у вас нет ошибок, и ваши устройства не загружены, возможно, вы пропустили соглашение об именах. Можете ли вы показать нам какой-то код?

Ответ 2

Посмотрите это решение. Я не думаю, что использование транзакций - лучшая идея, поскольку, скорее всего, вы будете использовать транзакции в своем коде. Это решение предлагает загрузить светильники вручную в каждом из ваших тестов.

Ответ 3

Очень удобно LiipFunctionalTestBundle, что упрощает работу с приборами в тесте. Основная идея заключается в создании базы данных каждый раз, когда вы запускаете тесты, а затем загружаете приборы. Теперь вы можете сохранить модели, удалить, каждый тест они будут одинаковыми.