我在tests / Feature目录中有一个测试文件,内容如下:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
class UserTest extends TestCase
{
public function testA()
{
$response = $this->actingAs(\App\AdminUser::find(1))
->json('GET', '/users');
$response->assertStatus(200);
}
public function testB()
{
$response = $this->actingAs(\App\AdminUser::find(1))
->json('GET', '/users');
$response->assertStatus(200);
}
}
问题在于,执行两个测试时,第二个测试的断言失败,并出现以下错误:Expected status code 200 but received 403.
-Laravel由于某种原因抛出了AccessDeniedHttpException
。
如果我注释掉其中一种测试方法,则另一种可行。
任何想法都会受到赞赏。
---编辑---
这是控制器方法中的内容:
public function index() {
return view('users.index');
}
以及路由文件中的定义:
Route::group(['prefix' => 'users', 'as' => 'users.'], function () {
Route::get('/', ['as' => 'index', 'uses' => 'UserController@index']);
Route::get('datatables', ['as' => 'datatables', 'uses' => 'UserController@datatables']);
Route::get('show/{id}', ['as' => 'show', 'uses' => 'UserController@index']);
});
---编辑2 --- 原来这是我使用的软件包的问题。进一步的信息:https://github.com/JosephSilber/bouncer/issues/306