With Laravel it makes it really easy to test HTTP requests by using the trait
This has all the methods you will need to run HTTP requests from your feature tests.
One thing you will often come across in testing your application is when you need to test redirects. For example when you post to a form you might want to redirect to a different page on success and then redirect back to the previous page if the form errors.
There are a few methods you need to be aware of to be able to tests these:
From is used to define the HTTP referrer page
AssertRedirect will allow you to check what page the app redirects to.
In your controllers Laravel provides an easy way to redirect back to the previous page. In the example of a contact form you may have a
GET route to display the form then a
POST route to send the email.
Route::get('contact', 'ContactController@index'); Route::post('contact/send', 'ContactController@send');
It's common in the
send method to redirect back to
GET route when the contact form fails to send.
In Laravel this can be done by using the response helper.
To be able to test this you need to use the
from() method on the
MakesHttpRequests, this will tell Laravel where to redirect back to. You will use this on the request object in your test.
$response = $this->from('contact')->post('contact/send', [ 'name' => 'John', 'email' => 'firstname.lastname@example.org', 'message' => 'This is the email message', ]);
Then you simply use the
assertRedirect method to make sure it redirects to the correct route.