Ich mag die Löschmethode testen, aber ich bin nicht die erwarteten Ergebnisse von PHPUnit bekommen. Ich erhalte diese Meldung, wenn die Durchführung des Tests:PHPUnit: Erwartete Statuscode 200 erhielt aber 419 mit Laravel
Expected status code 200 but received 419. Failed asserting that false is true.
/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestResponse.php:77
/tests/Unit/CategoriesControllerTest.php:70
Laravel Version: 5.5
Vielen Dank für jede Hilfe!
Controller-Konstruktor:
public function __construct()
{
$this->middleware('auth');
$this->middleware('categoryAccess')->except([
'index',
'create'
]);
}
Controller-Methode:
public function destroy($categoryId)
{
Category::destroy($categoryId);
session()->flash('alert-success', 'Category was successfully deleted.');
return redirect()->action('[email protected]');
}
categoryAccess Middleware:
public function handle($request, Closure $next)
{
$category = Category::find($request->id);
if (!($category->user_id == Auth::id())) {
abort(404);
}
return $next($request);
}
Kategorie Modell:
protected $dispatchesEvents = [
'deleted' => CategoryDeleted::class,
];
Ereignis-Listener
public function handle(ExpensesUpdated $event)
{
$category_id = $event->expense->category_id;
if (Category::find($category_id)) {
$costs = Category::find($category_id)->expense->sum('cost');
$category = Category::find($category_id);
$category->total = $costs;
$category->save();
}
}
PHPUnit löschen Test:
use RefreshDatabase;
protected $user;
public function setUp()
{
parent::setUp();
$this->user = factory(User::class)->create();
$this->actingAs($this->user);
}
/** @test */
public function user_can_destroy()
{
$category = factory(Category::class)->create([
'user_id' => $this->user->id
]);
$response = $this->delete('/category/' . $category->id);
$response->assertStatus(200);
$response->assertViewIs('category.index');
}
Es ist ein Authentifizierungsproblem, versuchen Sie mit '$ this-> withoutMiddleware();' nur um zu sehen, ob es in Ordnung sein wird !! – Maraboc
Hallo danke, habe ich auf das Verfahren, dass und lief den Test erneut und ich bekomme diese Meldung jetzt: Erwarteten Statuscode 200 erhielt aber 302 – qwerty11
dieses Mal versucht die Behandlung 'WithoutMiddleware verwenden;' in der PHPUnit Klasse und nicht vergessen um es zu importieren, verwenden Sie Illuminate \ Foundation \ Testing \ WithoutMiddleware; ' – Maraboc