Laravel测试API发布MethodNotAllowedHttpException

时间:2019-03-08 14:09:52

标签: laravel unit-testing laravel-5

你好,我使用的是 Laravel 5.5 ,并且已经过测试

public function testCreate()
    {
        $userAdmin = factory(User::class)->create();
        $roleAdmin = Role::where('name', 'admin')->first();

        $userAdmin->roles()->attach($roleAdmin);

        $this->actingAs($userAdmin)->post('/api/object/create')
            ->assertJson(["success"=>true]);
    }

在我的路线上:

Route::group(['middleware' => 'auth:api'], function () {
   Route::group(['prefix'=>'object'], function(){
      Route::post('create', 'ObjectController@create')->middleware('can:create,App\Models\Object');
   });
});

但是当我运行测试返回时:

  

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException

我已经尝试使用以下方法清除路线:

php artisan route:cache

并带有:

$this->actingAs($userAdmin, 'api')->post('/api/object/create')

还有

$this->actingAs($userAdmin, 'api')->post('/object/create')

我在中间件API中使用的我的Policy函数是:

public function create(User $user){
   return $user->isAdmin();
}

但是它不起作用。我错了吗?

1 个答案:

答案 0 :(得分:0)

您需要登录,因为您具有身份验证中间件。