2016-10-02 2 views
2

Я проверяю отправку электронной почты в моем приложении symfony2, у меня есть настраиваемая среда, которая правильно настроена с настройками электронной почты и позволяет отправлять электронные письма. Я создал среду test_emails, и я хочу запустить с ней свои тесты phpunit.Тесты на запуск phpunit Symfony2 в разных средах

У phpunit, похоже, нет этой функции, поэтому мой единственный вариант, вероятно, создает пользовательский файл начальной загрузки, но я не могу найти нигде, как это сделать.

ответ

0

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

Пример: php app/console app:emails:test-emails --env=dev

1

Док о Environments говорит:

test среда используется при написании функциональных тестов и не доступна в браузере непосредственно через фронт-контроллер. Другими словами, в отличие от других сред нет файла переднего контроллера app_test.php.

Поэтому при тестировании электронных писем вы должны использовать функциональный тест, который хорошо описан в How to Test that an Email is Sent in a Functional Test.

Если вы хотите написать собственный загрузчик с некоторой простой логикой см: How to Customize the Bootstrap Process before Running Tests

Может быть, вы можете настроить то, что окружающая среда тест Жгут используется при создании пользовательских тест, который загружает ядро, как и здесь How can I test a service in symfony2? и затем передается массив параметров bootKernel(). См:

1

Если вы используете Symfonys WebtestCase вы можете настроить среду в качестве опции:

$client = static::createClient(array('environment' => 'test-emails')); 
0

Используйте различные файлы phpunit.xml конфигурации для каждой среды.

. 
├── phpunit_test_emails.xml 
└── phpunit_other_env.xml 

Запуск тестов с конкретной конфигурацией:

$ phpunit -c phpunit_test_emails.xml 

Вы можете установить различные конфигурации PHP в конфигурационном файле XML.

Вы создаете пользовательский бутстрап через атрибут bootstrap, где при необходимости могут быть сделаны дополнительные инициализации.

<phpunit bootstrap="test/bootstrap.php"> 

    <!-- ... --> 

    <php> 
     <includePath>.</includePath> 
     <ini name="foo" value="bar"/> 
     <const name="foo" value="bar"/> 
     <var name="foo" value="bar"/> 
     <env name="foo" value="bar"/> 
     <post name="foo" value="bar"/> 
     <get name="foo" value="bar"/> 
     <cookie name="foo" value="bar"/> 
     <server name="foo" value="bar"/> 
     <files name="foo" value="bar"/> 
     <request name="foo" value="bar"/> 
    </php> 

</phpunit> 

Для получения более подробной информации см. PHPUnit Manual.

+0

Да, но вы не можете изменить свою среду symfony, это всегда будет работать на 'test' env. – nacholibre

+0

Вы можете указать загрузку PHPUnit через атрибут начальной загрузки (см. Отредактированный ответ). Но, возможно, я не понимаю, что вы пытаетесь сделать.Если вы хотите указать среду для '$ kernel = new AppKernel ('prod', false);' затем определите константу env или переменные в тестовом бутстрапе, а затем в вашем загрузочном буфере приложения выполните 'if TEST_CONSTANT, тогда сделайте это иначе сделайте это ... '. –

Смежные вопросы