【问题标题】:Unit test with Laravel Passport scope使用 Laravel Passport 范围进行单元测试
【发布时间】:2017-05-15 11:55:29
【问题描述】:

伙计们! 当我尝试使用 Laravel 和 Passport 进行单元测试时遇到问题。

我有一些受 auth:api 中间件保护的路由,但还有一些受 Passport scope 中间件保护的路由。

例如,这是我的单元测试之一:

 public function testGetPublishedPost(){

   $user = factory(\App\User::class)->create();
   $this->actingAs($user, 'api');


   $article1 = factory(\App\Article::class)->create();
   $article2 = factory(\App\Article::class)->create();
   $article3 = factory(\App\Article::class)->create( ['published' => false);


   $json = $this->call('get', '/api/articles');
   $articles = json_decode($json->getContent());

   $this->assertEquals(200, $json->getStatusCode());
   $this->assertEquals(2, count($articles));
}

这一切都很好,但现在,我想做一些测试,包括一个范围。

我该怎么做?

谢谢!

【问题讨论】:

    标签: php laravel unit-testing phpunit laravel-passport


    【解决方案1】:

    如果您不关心测试 auth 中间件,您可以通过定义一个临时路由到您的函数来完全跳过护照身份验证:

    Route::get('/_test/api/articles', 'App\Http\Controllers\YourApiController@yourArticleFunction');
    
    //Gain access to Auth:user() in your api controller
    $this->be($user);
    
    //Call the temporary route
    $response = $this->call('GET', '/_test/api/articles');
    

    【讨论】:

      猜你喜欢
      • 2019-08-05
      • 1970-01-01
      • 2022-08-09
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 2013-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多