有没有办法用Codeception设置会话变量?我试过了:
$_SESSION['variable'] = true;
但这似乎不起作用。
答案 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。 对不起我的英语不好