我正在尝试在我的 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);
但是我不能伪造 session ,因为当我登录时,我实际上是在请求另一台服务器的访问 token 以进行身份验证。如果没有此 token ,我将无法显示任何页面,因为数据服务器将拒绝连接。
简而言之,我在 testLogin
函数中获得了此 token ,但之后它就消失了。
我当然可以为每个测试进行登录,但是如果我要运行大约 150 个测试,那么请求就会很多。
是否有更好的方法在所有测试期间保留此 token ?
最佳答案
这是我所做的:
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');
}
关于php - Laravel:使用身份验证进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31715741/