我正在尝试为我的Symfony 3应用程序创建验收测试,但它无法正常工作。它总是向我显示一个错误:
AdminFamilyTestCest:测试我的网站Test的admin \ farm页面 tests \ acceptance \ AdminFamilyTestCest.php:testFamilyPage Step Can 参见标题"家庭"失败失败断言 /管理/家庭/ - >无法启动会话,因为已经发送了标头 " C:\ wamp64 \ WWW \农场\厂商\ symfony的\ PHPUnit的桥\ SymfonyTestsListener.php" 在第77行。(500内部服务器错误)确定需要支持?失败 启动会话,因为标题已经发送过 " C:\ wamp64 \ www \ farm \ vendor [内容太长而无法显示。 请参阅' C:\ wamp64 \ www \ farm \ tests / _output \' 目录] - >包含"#logout"。
场景步骤:
FAILURES! 测试:1,断言:3,失败:2。
较短的消息是:由于标题已经发送,无法启动会话。
我的测试代码:
class AdminFamilyTestCest
{
public function testFamilyPage(AcceptanceTester $I)
{
$I->wantToTest('Admin\Farm page of my site');
$I->amOnPage('/login');
$I->see('Log in');
$I->fillField('_username', 'admin');
$I->fillField('_password', 'admin');
$I->click('Log in');
$I->amOnPage('/admin/families/');
$I->canSeeInTitle('Family');
$I->see('#logout');
$I->amOnPage('/logout');
$I->amOnPage('/login');
$I->seeInTitle('Welcome!');
}
}
测试非常简单,但我不知道错误发生的原因。
答案 0 :(得分:1)
问题的根本原因是某些代码正在使用header()函数并直接发送输出。
为了能够使用Codeception的Symfony模块,必须使用Symfony响应对象设置所有输出和标头。 如果无法实现,则替代方法是使用PhpBrowser或WebDriver模块。