我试图在我的Laravel应用程序中进行一些测试。首先,我检查登录是否正常工作:
public function testLogin(){
$this->visit('/auth/login')
->type('mylogin', 'login')
->type('mypassword', 'password')
->press('Login')
->seePageIs('/home');
}
好的,登录工作正常!
现在,我想检查页面/accountInfo
中的所有信息是否正确:
public function testAccountInfoDisplay(){
$this->visit('/accountInfo')
->see('criticaldata');
}
但是我从未看到/accountInfo
页面,因为我已经重定向,因为我没有登录。
我在文档中看到了一些解决方案:
$this->actingAs($user)
->withSession(['foo' => 'bar'])
->visit('/')
->see('Hello, '.$user->name);
但是我无法伪造一个会话,因为当我登录时,我实际上要求访问令牌到另一台服务器进行身份验证。如果没有此令牌,我将无法显示任何页面,因为数据服务器将拒绝连接。
简而言之,我在testLogin
函数中获得了此标记,但它在之后消失了。
我当然可以为每个测试进行登录,但如果我要运行150个测试,那就是很多请求。
在所有测试中是否有更好的方法来保留此令牌?
答案 0 :(得分:1)
这是我做的:
public function testLogin(){
$this->visit('/auth/login')
->type('myLogin', 'login')
->type('myPassowrd', 'password')
->press('Login')
->seePageIs('/home');
return Session::all();
}
/**
* @depends testLogin
*/
public function testAccountInfoDisplay($session){
foreach($session as $key=>$value){
Session::set($key, $value);
}
$this->visit('/accountInfo')
->see('4631');
}