Действие контроллера вызывает отправку электронной почты, а затем перенаправление. Функциональная проверка этого действия не выполнена из-за перенаправления. Если контроллер переписан для отображения шаблона, тест проходит успешно. [Это, как правило, правда; ситуацию можно воспроизвести, используя код из [документации Symfony] [1]].
«/ usr / bin / php» «/ usr / bin / phpunit» «—colors» «—log-junit» «/ tmp / nb-phpunit-log.xml» «—bootstrap» «/ home / george /volunteer/app/bootstrap.php.cache «» —configuration «» / home / george / волонтер / app / phpunit.xml.dist «» —filter «»% \ btestActivateOrganization \ b% «» / home / george /netbeans-8.0.1/php/phpunit/NetBeansSuite.php»»—run=/home/george/volunteer/src/Truckee/MatchingBundle/Tests/Controller/AdminControllerTest.php»PHPUnit 3.7.28 автор Себастьян Берганг.
Конфигурация читается из /home/george/volunteer/app/phpunit.xml.dist
F
Время: 1,36 секунды, Память: 40,75 Мб
Был 1 сбой:
1)
Траки \ MatchingBundle \ Тесты \ Controller \ AdminControllerTest :: testActivateOrganization
Не удалось подтвердить, что 0 соответствует ожидаемому 1./home/george/volunteer/src/Truckee/MatchingBundle/Tests/Controller/AdminControllerTest.php:64
ОТКАЗЫ! Тесты: 1, Утверждения: 1, Неудачи: 1.
Готово.
public function activateOrgAction($id)
{
$em = $this->getDoctrine()->getManager();
$organization = $em->getRepository("TruckeeMatchingBundle:Organization")->find($id);
$temp = $organization->getTemp();
if (true === $temp) {
$organization->setTemp(false);
$organization->setActive(true);
$orgName = $organization->getOrgName();
$em->persist($organization);
$em->flush();
$to = $em->getRepository("TruckeeMatchingBundle:Staff")->getActivePersons($id);
$mailer = $this->container->get('admin.mailer');
$mailer->activateOrgMail($organization, $to);
$flash = $this->get('braincrafted_bootstrap.flash');
$flash->success("$orgName has been activated");
}
return $this->redirect($this->generateUrl('admin_home'));
}
class AdminControllerTest extends WebTestCase
{
private $client;
public function setUp()
{
$classes = array(
'Truckee\MatchingBundle\DataFixtures\SampleData\LoadFocusSkillData',
'Truckee\MatchingBundle\DataFixtures\SampleData\LoadAdminUser',
'Truckee\MatchingBundle\DataFixtures\SampleData\LoadStaffUserGlenshire',
'Truckee\MatchingBundle\DataFixtures\SampleData\LoadStaffUserMelanzane',
'Truckee\MatchingBundle\DataFixtures\SampleData\LoadTemplateData',
'Truckee\MatchingBundle\DataFixtures\SampleData\LoadOpportunity',
'Truckee\MatchingBundle\DataFixtures\SampleData\LoadVolunteer',
);
$this->loadFixtures($classes);
$this->client = $this->createClient();
$this->client->followRedirects();
}
public function login($user)
{
$crawler = $this->client->request('GET', '/login');
$form = $crawler->selectButton('Login')->form();
$form['_username'] = $user;
$form['_password'] = '123Abcd';
$crawler = $this->client->submit($form);
return $crawler;
}
public function testActivateOrganization()
{
$crawler = $this->login('admin');
$link = $crawler->selectLink('Accept organization')->link();
$crawler = $this->client->click($link);
$mailCollector = $this->client->getProfile()->getCollector('swiftmailer');
$this->assertEquals(1, $mailCollector->getMessageCount());
}
...
}
Добавьте это в свой юнит-тест:
$this->client->followRedirects(false);
Увидеть Symfony документы по тестированию. Перенаправления не выполняются автоматически, но вы устанавливаете их для этого. Если вы хотите выполнить следующее перенаправление после тестирования электронной почты, вы можете позвонить
$crawler = $client->followRedirect();
Если вы хотите вернуться обратно, чтобы следовать всем перенаправлениям, позвоните:
$client->followRedirects();
Других решений пока нет …