Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is a feature test in Laravel?
A feature test checks how different parts of your Laravel app work together. It tests the app from the user's point of view, like clicking links or submitting forms.
Click to reveal answer
beginner
Which Laravel class do feature tests usually extend?
Feature tests usually extend the Tests\TestCase class, which sets up the application environment for testing.
Click to reveal answer
beginner
How do you simulate a user visiting a page in a Laravel feature test?
You use the $this->get('/url') method to simulate a user visiting a page with a GET request.
Click to reveal answer
beginner
What method would you use to check if a response contains specific text in a Laravel feature test?
Use assertSee('text') on the response to check if the page shows the given text.
Click to reveal answer
beginner
Why are feature tests important in Laravel development?
Feature tests help ensure your app works correctly from the user's view. They catch bugs early and give confidence when changing code.
Click to reveal answer
Which class do Laravel feature tests extend?
ATests\TestCase
BPHPUnit\Framework\TestCase
CIlluminate\Test\FeatureTest
DLaravel\FeatureTestCase
✗ Incorrect
Laravel feature tests extend Tests\TestCase which sets up the app environment.
How do you simulate a POST request in a Laravel feature test?
A$this->visit('/url')
B$this->get('/url')
C$this->post('/url', [data])
D$this->send('/url')
✗ Incorrect
Use $this->post('/url', [data]) to simulate a POST request with data.
Which method checks if the response contains specific text?
AassertContains()
BassertSee()
CassertText()
DassertHasText()
✗ Incorrect
assertSee() checks if the response body contains the given text.
What does a feature test primarily test?
ACSS styling
BDatabase schema
CIndividual functions
DUser interactions and app flow
✗ Incorrect
Feature tests simulate user actions and test how the app behaves as a whole.
Which artisan command creates a new feature test?
Aphp artisan make:test TestName --feature
Bphp artisan make:feature TestName
Cphp artisan make:test TestName --unit
Dphp artisan create:test TestName
✗ Incorrect
Use php artisan make:test TestName --feature to create a feature test.
Explain how to write a simple Laravel feature test that checks if the homepage loads successfully and shows the text 'Welcome'.
Think about simulating a GET request and checking the response.
You got /4 concepts.
Describe why feature tests are useful compared to unit tests in Laravel.
Consider the difference between testing small pieces vs the whole app.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of Feature tests in Laravel?
easy
A. To test how the application behaves from the user's perspective
B. To check the syntax of PHP code
C. To test database migrations only
D. To optimize application performance
Solution
Step 1: Understand the role of feature tests
Feature tests simulate user actions and check the app's responses to ensure it works as expected.
Step 2: Compare with other test types
Unlike unit tests or migration tests, feature tests focus on user experience and request handling.
Final Answer:
To test how the application behaves from the user's perspective -> Option A
Quick Check:
Feature tests = user behavior testing [OK]
Hint: Feature tests simulate user requests and responses [OK]
Common Mistakes:
Confusing feature tests with unit tests
Thinking feature tests only check database
Assuming feature tests optimize performance
2. Which of the following is the correct way to start a feature test method in Laravel?
easy
A. public testUserCanLogin()
B. function testUserCanLogin()
C. public function testUserCanLogin()
D. def testUserCanLogin()
Solution
Step 1: Recall Laravel test method syntax
Laravel feature test methods must be public and start with 'test' or have the @test annotation.
Step 2: Identify correct PHP method declaration
Only 'public function testUserCanLogin()' is valid PHP syntax for a test method in Laravel.
Final Answer:
public function testUserCanLogin() -> Option C
Quick Check:
Test methods are public functions [OK]
Hint: Test methods must be public functions starting with 'test' [OK]
Common Mistakes:
Omitting 'public' keyword
Using wrong function declaration syntax
Using Python style 'def' keyword
3. Given this Laravel feature test code:
public function testHomePageReturnsOk()
{
$response = $this->get('/');
$response->assertStatus(200);
}
What does this test check?
medium
A. The home page returns a 404 error
B. The home page returns a 200 OK status
C. The home page redirects to login
D. The home page returns JSON data
Solution
Step 1: Analyze the HTTP request in the test
The test sends a GET request to '/' (home page).
Step 2: Check the assertion
The test asserts the response status is 200, meaning OK.
Final Answer:
The home page returns a 200 OK status -> Option B
Quick Check:
assertStatus(200) means success [OK]
Hint: assertStatus(200) means page loaded successfully [OK]
Common Mistakes:
Confusing 200 with 404 or redirect codes
Assuming JSON response without checking
Misreading the URL path
4. What is wrong with this Laravel feature test code?
public function testUserRegistration()
{
$response = $this->post('/register', [
'email' => 'user@example.com',
'password' => 'secret',
]);
$response->assertRedirect('/home');
}
medium
A. Missing CSRF token in the post request
B. Password should be hashed before sending
C. Password field should be 'password_confirmation' instead of 'password'
D. The test method is missing the 'public' keyword
Solution
Step 1: Understand Laravel's CSRF protection
Laravel requires a CSRF token for POST requests to prevent attacks.
Step 2: Check test request handling
Feature tests use the 'web' middleware group by default, which includes CSRF protection. The $this->post() method does not automatically include a CSRF token, so the test will fail unless the token is provided or middleware is disabled.
Step 3: Identify the actual issue
Since the test does not disable middleware, missing CSRF token causes failure.
Final Answer:
Missing CSRF token in the post request -> Option A
Quick Check:
POST requests need CSRF token unless middleware disabled [OK]
Hint: Remember CSRF token is needed for POST requests [OK]
Common Mistakes:
Assuming password must be hashed in test input
Confusing password and password_confirmation fields
Ignoring middleware effects on tests
5. You want to test a feature where a logged-in user can update their profile. Which sequence correctly sets up the test in Laravel feature tests?
hard
A. Assert redirect -> Create user -> Send POST request -> Act as user
B. Send POST request to update route -> Create user -> Assert redirect -> Act as user
C. Act as user -> Assert redirect -> Create user -> Send POST request
D. Create user -> Act as user -> Send POST request to update route -> Assert redirect
Solution
Step 1: Create a user to simulate logged-in state
First, create a user instance in the database for authentication.
Step 2: Use actingAs() to simulate logged-in user
Use $this->actingAs($user) to run requests as that user.
Step 3: Send POST request to update profile route
Send the update request while acting as the user.
Step 4: Assert the response redirects as expected
Check that the response redirects to the correct page after update.
Final Answer:
Create user -> Act as user -> Send POST request to update route -> Assert redirect -> Option D
Quick Check:
Setup user then act as user before request [OK]
Hint: Create user first, then act as user before request [OK]