如何在 Laravel 5 中使用 Codeception 在单元测试中模拟身份验证用户?
How to mock authentication user on unit tests with Codeception in Laravel 5?
我必须将我的单元测试转换为代码接收。我需要使用本文中的 loginWithFakeUser() 函数 - How to mock authentication user on unit test in Laravel?
public function loginWithFakeUser() {
$user = new User([
'id' => 1,
'name' => 'yish'
]);
$this->be($user);
}
当我的 class 已经扩展 \Codeception\Test\Unit
时,如何使用 $this->be()
?我不知道我应该 use ..
或如何正确使用。将函数 loginWithFakeUser() 放入其中:
use Illuminate\Foundation\Testing\Concerns\InteractsWithAuthentication;
use Illuminate\Foundation\Testing\Concerns\InteractsWithSession;
class AdminTest extends \Codeception\Test\Unit {
use InteractsWithAuthentication;
use InteractsWithSession;
}
给我一个错误:
[ErrorException] Undefined property: AdminTest::$app
我不确定如何设置 $app 变量。请帮我。非常感谢!
我可以通过模拟 Auth
class 来解决这个问题。
$oUser = new User([
'id' => 1,
'name' => 'yish'
]);
Auth::shouldReceive('check')->once()->andReturn(true);
Auth::shouldReceive('user')->once()->andReturn($oUser);
在我的实际代码中,它用作:
if(Auth::check() === true) {
$sName = Auth::user()->name;
}
我必须将我的单元测试转换为代码接收。我需要使用本文中的 loginWithFakeUser() 函数 - How to mock authentication user on unit test in Laravel?
public function loginWithFakeUser() {
$user = new User([
'id' => 1,
'name' => 'yish'
]);
$this->be($user);
}
当我的 class 已经扩展 \Codeception\Test\Unit
时,如何使用 $this->be()
?我不知道我应该 use ..
或如何正确使用。将函数 loginWithFakeUser() 放入其中:
use Illuminate\Foundation\Testing\Concerns\InteractsWithAuthentication;
use Illuminate\Foundation\Testing\Concerns\InteractsWithSession;
class AdminTest extends \Codeception\Test\Unit {
use InteractsWithAuthentication;
use InteractsWithSession;
}
给我一个错误:
[ErrorException] Undefined property: AdminTest::$app
我不确定如何设置 $app 变量。请帮我。非常感谢!
我可以通过模拟 Auth
class 来解决这个问题。
$oUser = new User([
'id' => 1,
'name' => 'yish'
]);
Auth::shouldReceive('check')->once()->andReturn(true);
Auth::shouldReceive('user')->once()->andReturn($oUser);
在我的实际代码中,它用作:
if(Auth::check() === true) {
$sName = Auth::user()->name;
}