Codeception不适用于Symfony

时间:2016-10-03 14:12:49

标签: phpunit symfony codeception symfony-3.1

我正在尝试为我的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"。

场景步骤:

  1. $ I->参见("#注销&#34)
  2. $ I-> canSeeInTitle("家庭&#34)
  3. $ I-> amOnPage(" /管理/家庭/&#34)
  4. $ I->点击("登录")
  5. $ I-> fillField(" _password""管理&#34)
  6. $ I-> fillField(" _username""管理&#34)
  7. 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!');
        }
    }
    

    测试非常简单,但我不知道错误发生的原因。

1 个答案:

答案 0 :(得分:1)

问题的根本原因是某些代码正在使用header()函数并直接发送输出。

为了能够使用Codeception的Symfony模块,必须使用Symfony响应对象设置所有输出和标头。 如果无法实现,则替代方法是使用PhpBrowser或WebDriver模块。