Тестирование Symfony 3.4 контроллера с неработающими сервисами - PullRequest
0 голосов
/ 28 января 2020

Я только что обновил действие контроллера в проекте Symfony 3.4, чтобы использовать службы для отправки электронной почты и очистки данных (пытаясь достичь хорошей практики использования как можно меньшего количества кода в контроллере).

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

Пример: действительно простой тест, проверяющий, если вы публикуете sh форму без какого-либо содержимого Вы получаете сообщение об ошибке колбы.

public function testPublicationEmptyAnnonce() {
  $client = $this->makeClient();
  $crawler = $client->request('GET', '/portail/clienttest/publier');
  $form = $crawler->selectButton('annonce_save')->form();
  $crawler = $client->submit($form);
  $this->assertEquals(200, $client->getResponse()->getStatusCode());
  $this->assertSame(1, $crawler->filter('html:contains("petit message")')->count());
}

Если я попробую самостоятельно в браузере, все будет хорошо, сообщение флэш-сумки будет напечатано. Если я использую phpUnit для запуска теста, сообщение flashbag никогда не печатается.

Вот часть действия Контролера, ответственного за это.

/**
* @Route("/portail/{clientname}/publier", name="portail_publier")
* @Template("CovoituragesimpleAnnonceBundle:Portail:deposer.html.twig")
*/
public function publierAction($clientname, Request $request)
{
  //getting services to check url and send transaction email
  $datechecker = $this->container->get('app.utils.datechecker');
  $notification = $this->container->get('app.utils.notificationservice');

  [...] // Sanitizing entries via datechecker 

  // create form
  $formajoutannonce = $this->createForm(...);

  [...] //handle form if valid

  // handle form if not valid
  } else if($formajoutannonce->isSubmitted() && !$formajoutannonce->isValid()){

    //get value of form
    $annonce = $formajoutannonce->getData();
    $request->getSession()->getFlashBag()->add(
      'error',
      'This sentence is found in a browser but not when running the test with phpunit'
    );
  }

  return array(
   [...]
   'form' => $formajoutannonce->createView()
  );
}

Может кто-нибудь помочь мне или выслать мне материал для чтения? В моем случае нет перенаправления ... Заранее спасибо.

...