问题描述
自己公司搭建的框架,并非Laravel
phpunit做自动化测试,测试api接口,我在setUp方法使用登录方法进行登录,
然后新建一个方法去测试需要用户登录的api接口,例如查看用户自己的文章这个接口
结果报以下错误
Cannot modify header information - headers already sent by (output started at /Users/pengpn/php/wwwroot/yesaway/ims/vendor/phpunit/phpunit/src/Util/Printer.php:109)
登录方法里面有setCookie 设置用户登录的cookie
问题出现的环境背景及自己尝试过哪些方法
自己公司搭建的框架,并非Laravel
有些接口方法里面需要判断了有没有用户登录信息的,没有用户登录信息就返回user error
的,所以在做phpunit测试的时候,我想测试这些接口,就需要进行所谓的模拟用户登录。
尝试过使用./vendor/bin/phpunit --stderr
加了--stderr是没有报那个错了,但是setCookie没有设置cookie了
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
class ItineraryServiceTest extends ApiTestCase
{
public function setUp()
{
$params = [
'type' => 'email',
'email' => '312924860@qq.com',
];
$this->userLogin($params);
}
public function testGetItineraryList()
{
$itineraryService = new ItineraryService();
$list = $itineraryService->getItineraryList();
$this->assertArrayHasKey('current',$list['data']);
}
}
Login的设置cookie方法
public function setLoginCookieCache($userInfo, $lifeTime = 2592000)
{
$sessionId = md5($userInfo['user_id'] . 'xxx_pc_user');
$cacheKey = 'user_' . md5($userInfo['user_id']);
$this->C['cache']->set($cacheKey, $userInfo, $lifeTime);
setcookie('xxx_pc_user', json_encode(array('key' => $sessionId, 'info' => $userInfo)), time() + (int)$lifeTime, '/', $this->host);
}
你期待的结果是什么?实际看到的错误信息又是什么?
Cannot modify header information - headers already sent by (output started at /Users/pengpn/php/wwwroot/yesaway/ims/vendor/phpunit/phpunit/src/Util/Printer.php:109)