Heim >Backend-Entwicklung >PHP-Tutorial >So führen Sie Request im Laravel-Einheitentest aus
<code>class TestRequest() { public function rules(){ return [ 'a'=>['required','min:3'], ]; } } //controller public functino store(TestRequest $request) { } Test.php public function testStore() { $data = []; $response = $this->call('POST','uri',$data); dd($response->getContent()) } </code>
Jedes Mal, wenn die Überprüfung fehlschlägt, ist $response->getStatusCode() immer 302, was normal ist.
Aber ich möchte zum Beispiel wissen, ob $data['a'] = 'a', die Anzahl der Ziffern weniger als 3 beträgt, und ich möchte die sofortigen Informationen erhalten, wie soll ich diese erhalten?
Neu beim Testen, bitte helfen Sie mir, danke!
<code>class TestRequest() { public function rules(){ return [ 'a'=>['required','min:3'], ]; } } //controller public functino store(TestRequest $request) { } Test.php public function testStore() { $data = []; $response = $this->call('POST','uri',$data); dd($response->getContent()) } </code>
Jedes Mal, wenn die Überprüfung fehlschlägt, ist $response->getStatusCode() immer 302, was normal ist.
Aber ich möchte zum Beispiel wissen, ob $data['a'] = 'a', die Anzahl der Ziffern weniger als 3 beträgt, und ich möchte die sofortigen Informationen erhalten, wie soll ich diese erhalten?
Neu beim Testen, bitte helfen Sie mir, danke!
mwjmt mg
Dieser Test ist so seltsam.
Wenn Sie wirklich die Fehlermeldung erhalten möchten, können Sie Session::get verwenden. Denn nachdem die Überprüfung fehlschlägt, wird das Fehlerobjekt in der Sitzung im Flash gespeichert.
Zum Beispiel in Ihrem Fall:
<code>$response = $this->call(...); $this->assertEquals(302, $response->getStatusCode()); dd(session('errors')->getBag('default')->first('a'));</code>
getBag
ruft ein MessageBag
-Objekt ab. Sie können get
verwenden, um alle Überprüfungsfehlermeldungen abzurufen, oder first
, um die erste Fehlermeldung abzurufen. Die API-Dokumentation finden Sie unter: http://laravel-china.org/api/...
--- Update
Im Allgemeinen sollte ein Test wie dieser in mindestens zwei Teile unterteilt werden:
Testen Sie zuerst den Validierungsteil und verwenden Sie Validator
, z. B.
<code>$data = ['a' => 'b']; $request = new MyRequest(); $rules = $request->rules(); $validator = Validator::make($attributes, $rules); $fails = $validator->fails(); $this->assertEquals(false, $fails);</code>
Dann schreiben Sie die Testmethode, um die Logik dahinter zu testen.
In Bezug auf Testanfragen in Laravel bietet das Framework viele Methoden zum Testen. Sie können einen Blick auf IlluminateFoundationTestingConcernsMakesHttpRequests
werfen. Dies deckt grundsätzlich alle Tests auf Anfrage und Antwort ab. Verwenden Sie andere Methoden, um andere Teile zu testen, z. B. das Testen der Benutzerauthentifizierung, das Testen von Cookie-Sitzungen, das Testen von Datenbanken, das Testen von Warteschlangen usw.