【发布时间】:2014-07-02 03:26:25
【问题描述】:
有没有办法使用 Codeception 设置会话变量?我试过了:
$_SESSION['variable'] = true;
但这似乎不起作用。
【问题讨论】:
标签: php codeception
有没有办法使用 Codeception 设置会话变量?我试过了:
$_SESSION['variable'] = true;
但这似乎不起作用。
【问题讨论】:
标签: php codeception
我有同样的错误,也许我找到了解决方案。
注意:我使用 Yii2 和 PhpBrowser
<?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 我 检查存在 会话变量 而且它存在!
附: 抱歉我的英语不好
【讨论】:
您可以在 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';
【讨论】: