1

我正在尝试为我的 Symfony 3 应用程序创建验收测试,但它不起作用。它总是向我显示一个错误:

AdminFamilyTestCest:测试我站点的 admin\farm 页面 Test tests\acceptance\AdminFamilyTestCest.php:testFamilyPage Step 可以在标题“Family”中看到 Fail Failed asserting that
/admin/families/ --> 无法启动会话,因为 headers 已经被由第 77 行的“C:\wamp64\www\farm\vendor\symfony\phpunit-bridge\SymfonyTestsListener.php”发送。(500 内部服务器错误)OK 需要支持?无法启动会话,因为标头已由“C:\wamp64\www\farm\vendor [内容太长无法显示。请参阅 'C:\wamp64\www\farm\tests/_output\' 目录中的完整响应” ] --> 包含“#logout”。

场景步骤:

  1. $I->see("#logout")
  2. $I->canSeeInTitle("家庭")
  3. $I->amOnPage("/admin/families/")
  4. $I->click("登录")
  5. $I->fillField("_password","admin")
  6. $I->fillField("_username","admin")

失败!测试: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!');
    }
}

测试很简单,但我不知道为什么会发生错误。

4

1 回答 1

3

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

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

于 2016-10-03T22:03:49.283 回答