为了使用我试图测试的系统,您需要成为经过身份验证的用户。登录后,会创建一个$ _SESSION变量,其中包含用户ID和user_name,并且您已登录。此会话始终处于检查状态,如果此会话变量不存在,则会重定向用户到登录页面。我可以使用behat登录,但一旦进入系统,我就会重定向回登录页面。如果我评论负责$ _SESSION验证的行,它会按预期工作。你们有没有办法登录并保持会议?我使用laravel或symfony阅读了很多解决方案,但我没有使用任何框架。
以下是功能代码:
Feature:
In order to use the system, the user needs a valid login first
Scenario: Loading the log in page
Given I am on "/login.php"
Then I should see "Login"
@javascript
Scenario: Logging in with the right credentials
Given I am signed in
And I am on "/students"
And I wait 10 seconds
Then I should see "logout"
这是mink上下文代码的一部分:
/**
* @Given /^(?:|I )am signed in$/
*/
public function signIn()
{
session_start();
$_SESSION['admin']["user_name"] = 'admin';
$_SESSION['admin']["id"] = '1';
$this->getSession()->getDriver()->setCookie(session_name(), session_id());
session_commit();
}
答案 0 :(得分:0)
在每个方案之后,将重置PHP超全局变量$ _SESSION。您可以在每个Sceanrio中调用一个登录名,以最大程度地减少问题。
/* @Given I am logged in as :username with password :password
*
* @param $username
* @param $password
*/
public function iAmLoggedInAs($username, $password)
{
$session = $this->getSession();
$session->visit("[URL]");
$page = $session->getPage();
$page->find("named", array("id_or_name", "[id]"))->setValue($username);
$page->find("named", array("id_or_name", "[id]"))->setValue($password);
$page->find("named", array("id_or_name", "[submit button]"))->click();
}