如何在Laravel 5中使用Codeception在单元测试中模拟身份验证用户?

时间:2018-10-23 03:26:22

标签: laravel unit-testing codeception laravel-authentication

我必须将单元测试转换为代码接收。我需要使用本文中的loginWithFakeUser()函数-How to mock authentication user on unit test in Laravel?

public function loginWithFakeUser() {
    $user = new User([
        'id' => 1,
        'name' => 'yish'
    ]);
    $this->be($user);
}

当我的班级已经扩展$this->be()时,如何使用\Codeception\Test\Unit?我不知道该怎么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]未定义的属性:AdminTest :: $ app

我不确定如何设置$ app变量。请帮我。非常感谢!

1 个答案:

答案 0 :(得分:2)

我能够通过模拟Auth类来解决此问题。

$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;
}