У меня проблема с тестовым классом в проекте Laravel 6. Следующий тест не пройден, поскольку возвращенный ответ - 403 forbidden
, а не представление. Тем не менее, я могу воспроизвести это только в тестах - в основном приложении он возвращает представление, как и ожидалось. Кто-нибудь испытывал что-то подобное или может видеть что-то явно не так в приведенном ниже?
ProductTest. php
public function testUsersCanViewTheirOwnProducts(){
$user = Factory(User::class)->create();
$product = Factory(Product::class)->create(['user_id'=>$user->id]);
$this->actingAs($user);
$response = $this->get(route('show_product',['product'=>$product->id]));
$response->assertViewIs('products.show'); //Fails not a view (403 forbidden when response dumped)
$response->assertViewHas('product',$product);
}
Сброс $user->id
и $product->id
возврат 1
для обоих, как и ожидалось.
ProductController. php
public function __construct()
{
$this->authorizeResource(Product::class, 'product');
}
//...
public function show(Product $product)
{
return view("products.show",['product'=>$product]);
}
ProductPolicy. php
public function view(User $user, Product $product)
{
return $user->id === $product->user_id;
}
testing.env
//identical to .env apart from
TELESCOPE_ENABLED=false
DB_DATABASE=subscribe_test
маршрутов / веб. php
Route::get('/manage/products/{product}','ProductController@show')->middleware('auth')->name('show_product');
Я очистил все кэши с помощью нет эффекта. Ресурс возвращает 403 в тестах PHPUnit и 200 в приложении. Чего не хватает?