【问题标题】:How can I simulate logging out after using Passport::actingAs in a unit or integration test?在单元或集成测试中使用 Passport::actingAs 后如何模拟注销?
【发布时间】:2018-08-05 08:33:52
【问题描述】:

我有一个模拟登录的测试,然后我想测试一些东西,就像我没有登录一样。就像这样。

// log in as user with id 2
$id = 2;
Passport::actingAs(User::findOrFail($id));
testSomeStuff()
...
// now I want to test things as if I was not logged in

有没有办法在一个测试函数中做到这一点?我正在使用 Laravel 5.6 和 Passport 5。

【问题讨论】:

  • 也许可以试试Auth::logout()
  • 您找到解决方案了吗?我也有同样的问题。收到错误:方法 Illuminate\Auth\RequestGuard::logout 不存在。
  • @Shadrix 我想​​我没有。
  • 我遇到了同样的问题,无法提出解决方案,我想我都试过了。有一种方法可以取消 '$this->actingAs($this->user);'无论如何...我唯一的建议是在测试开始时进行所有未经授权的测试。

标签: php laravel laravel-5.5 laravel-passport


【解决方案1】:

在你的测试中试试这个

$this->refreshApplication();

有同样的问题,这是唯一对我有用的东西

编辑:似乎也清除了数据库。直接调用注销端点似乎也可以。

$this->actingAs($user)->get('/logout');

【讨论】:

    【解决方案2】:

    以下将起作用:

    Auth::logout();
    

    不要在你的测试类之上设置use Illuminate\Support\Facades\Auth;

    【讨论】:

      猜你喜欢
      • 2019-10-24
      • 2019-05-09
      • 2021-04-27
      • 2017-10-15
      • 2021-11-07
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多