Как настроить приборы Doctrine2 при тестировании с PHPUnit? - PullRequest
28 голосов
/ 08 июля 2011

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

Я хотел бы иметь чистый набор данных для работы перед каждым тестом и нашел следующие статьи:

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

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

Ответы [ 3 ]

6 голосов
/ 31 июля 2011

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

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

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

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

4 голосов
/ 13 июля 2013

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

4 голосов
/ 26 августа 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...