Как настроить инструменты Doctrine2 при тестировании с помощью PHPUnit?
Я пытаюсь начать работу с Symfony2 и пытаюсь настроить автоматическое тестирование для слоя модели моего приложения. В книге Symfony2 говорится об модульном тестировании контроллеров, но я не могу найти много примеров тестирования модели.
Я хотел бы иметь чистый набор данных для работы до того, как каждый тест пройдет и найдет эти статьи:
На основе статьи sznapka.pl у меня есть тест, фактически выполняющийся без ошибок, но, несмотря на то, что тестовая схема создана, приборы не загружаются. Я не понимаю, почему, или даже способ отладить это.
Предыстория: Я ранее работал с CakePHP, где загрузка светильников в основном обрабатывается автоматически, возможно, у меня неправильный подход для Symfony/Doctrine?
Ответы
Ответ 1
Да DoctrineFixtures - хороший выбор.
Для тестирования модели: вам не нужно загружать светильники в базу данных, вы должны создавать объекты с нужными вам данными (путем ввода их сеттерами).
Чтобы протестировать контроллер: загрузить доктрины и использовать транзакции доктрины, чтобы состояние вашей базы данных было прежним каждый тестовый ввод, начать транзакцию в setUp()
и откат в tearDow()
. (Если ваш контроллер также использует транзакции, я еще не нашел хорошего решения).
Если ошибка устройства отсутствует, если у вас нет ошибок, и ваши устройства не загружены, возможно, вы пропустили соглашение об именах. Можете ли вы показать нам какой-то код?
Ответ 2
Посмотрите это решение. Я не думаю, что использование транзакций - лучшая идея, поскольку, скорее всего, вы будете использовать транзакции в своем коде. Это решение предлагает загрузить светильники вручную в каждом из ваших тестов.
Ответ 3
Очень удобно LiipFunctionalTestBundle, что упрощает работу с приборами в тесте. Основная идея заключается в создании базы данных каждый раз, когда вы запускаете тесты, а затем загружаете приборы. Теперь вы можете сохранить модели, удалить, каждый тест они будут одинаковыми.