我的PHPUnit与Symfony2有问题。我尝试重现登录操作。在我的应用程序中,我使用Web服务将数据提供给日志用户,因此我创建了一个个人Userprovider。它的工作原理是,如果表单中的用户数据良好,我会创建一个cookie。当我连接时会创建两个cookie:REMEMBER cookie(自动创建)和另一个带有一些数据的cookie。
我使用以下代码创建了一个简单的函数来测试我的登录页面:
// TEST page de login avec de bonnes informations
$crawler = $client->request('GET', '/login');
$form = $crawler->selectButton('submit')->form();
$form['_username'] = $numero;
$form['_password'] = $pass;
$client->submit($form);
$client->followRedirects();
当我执行phpunit -c app --coverage-html reports
时控制台中没有错误,但文件test.log
说:
request.CRITICAL: Uncaught PHP Exception PHPUnit_Framework_Error_Warning: "Cannot modify header information - headers already sent by (output started at C:\_dev\php\EasyPHP\data\localweb\vendor\phpunit\phpunit\src\Util\Printer.php:139)" at C:\_dev\php\EasyPHP\data\localweb\myproject\src\project\projectBundle\Security\projectAuthenticator.php line 72 {"exception":"[object] (PHPUnit_Framework_Error_Warning(code: 2): Cannot modify header information - headers already sent by....
在文件projectAuthenticator.php
的第72行,我创建了我的cookie:
setcookie('mycookie', $cookieData, time() + (3600 * 24 * 365));
我尝试使用process isolation.,但它无效......
如果我通过了cookie的创建,我会返回一个UsernamePasswordToken
对象,我将被连接。
那么如何创建我的cookie来传递PHPUnit呢?因为我需要cookie的数据和正确的会话来测试私人页面并继续我的测试......
我希望你明白
由于
答案 0 :(得分:0)
定义cookie时应使用Symfony类:
// Create the cookie
$nextYear = new \Datetime('now');
$nextYear->add(new \DateInterval('P1Y'));
$cookie = new Symfony\Component\HttpFoundation\Cookie(
'mycookie', $cookieData, $nextYear->format('U'));
$response = $this->render(
'AppBundle:Default:index.html.twig',
array(
'variables' => $variables,
)
);
// Add the cookie to the response
$response->headers->setCookie($cookie);
return $response;
这将避免PHPUnit报告的错误。