【问题标题】:Codeception does not work with SymfonyCodeception 不适用于 Symfony
【发布时间】:2017-02-11 12:32:50
【问题描述】:

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

AdminFamilyTestCest:测试我的站点测试的 admin\farm 页面 tests\acceptance\AdminFamilyTestCest.php:testFamilyPage 步骤即可 见标题“家庭”失败失败断言
/管理员/家庭/ --> 无法启动会话,因为标头已由 "C:\wamp64\www\farm\vendor\symfony\phpunit-bridge\SymfonyTestsListener.php" 在第 77 行。(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!');
    }
}

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

【问题讨论】:

  • 查看tests/_output/AdminFamilyTestCest.testFamilyPage.html 文件并阅读完整的错误消息。它会告诉你什么代码正在输出。这是一个应用程序错误,而不是 Codeception 错误。

标签: phpunit symfony codeception symfony-3.1


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-03-25
    • 2022-10-23
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2016-08-14
    • 2016-07-19
    相关资源
    最近更新 更多