Codeception设置会话变量

时间:2014-07-02 03:26:26

标签: php codeception

有没有办法用Codeception设置会话变量?我试过了:

$_SESSION['variable'] = true;

但这似乎不起作用。

2 个答案:

答案 0 :(得分:1)

您可以在Codeception中使用Selenium模块的会话(因为它使用浏览器的实例来测试页面)。使用PHPBrowser模块,默认情况下会话将不起作用(因为它使用独立的CURL请求来获取页面内容)。所以你可以:

a)手动设置会话cookie:

$I->wantTo('test something');
$I->setCookie('sessionid', '123213123123123');
$I->amOnPage('/test');

b)创建一些辅助类并将变量存储在那里(我推荐这种方式)。

<强>测试/ _helpers / AppHelper.php:

class AppHelper extends \Codeception\Module
{
    public static $global;
    ...

验收测试:

AppHelper::$global = 'test';

答案 1 :(得分:0)

我有同样的错误,也许我找到了解决方法。

注意:我在PhpBrowser中使用Yii2

<?php
declare(strict_types=1);

namespace tests\frontend\acceptance;

// use ...

class MyCest
{
  public function _before(AcceptanceTester $I)
  {
    $_SESSION = [
      // some session values
      'id' => 15
    ];

    session_commit();

    /*
    PHPSESSID - is a default name
    but in Yii2 config you may override it
    check 'session' component in config
    */
    $I->setCookie('PHPSESSID', session_id(), [
      'domain' => ''
    ]);

    $I->amOnPage('/page');
  }
}

然后在PageController中,我检查是否存在会话变量 它存在

P.S。 对不起我的英语不好