Test-Driven Laravel
21h 48m 56s
English
Paid
Course description
The biggest objective of this course is to teach you how to TDD something real; not just another cookie-cutter to-do app.
Read more about the course
We cover fundamentals like:
- What test should you write first
- Organizing your test suite
- Feature tests vs. unit tests
- Testing validation rules
- Testing events and background jobs
- Working with test databases
- Speeding up your tests with test doubles
...as well as hard topics, like:
- Testing code that interacts with third-party services
- Writing your own test doubles from scratch
- Testing automated payouts with Stripe Connect
- Testing the sending of mass emails
- How to test race conditions
- Testing file uploads and server side image processing
Test-Driven Laravel teaches you how to design a solid test suite for a real-world, marketable product that you could actually charge money for.
Watch Online
Watch Online Test-Driven Laravel
0:00
/ #1: What Do We Build First?
All Course Lessons (166)
| # | Lesson Title | Duration | Access |
|---|---|---|---|
| 1 | What Do We Build First? Demo | 11:30 | |
| 2 | Sketching out Our First Test | 09:06 | |
| 3 | Getting to Green | 16:42 | |
| 4 | Unit Testing Presentation Logic | 11:03 | |
| 5 | Refactoring for Speed | 07:16 | |
| 6 | Hiding Unpublished Concerts | 06:56 | |
| 7 | Testing Query Scopes | 05:50 | |
| 8 | Factory States | 04:10 | |
| 9 | Introducing the Next Feature | 01:02 | |
| 10 | Browser Testing vs Endpoint Testing | 09:47 | |
| 11 | Outlining the First Purchasing Test | 06:23 | |
| 12 | Faking the Payment Gateway | 12:23 | |
| 13 | Adding Tickets to Orders | 05:32 | |
| 14 | Encapsulating Relationship Logic in the Model | 05:16 | |
| 15 | Getting Started with Validation Testing | 06:56 | |
| 16 | Reducing Duplication with Custom Assertions | 05:30 | |
| 17 | Handling Failed Charges | 07:00 | |
| 18 | Preventing Ticket Sales to Unpublished Concerts | 06:40 | |
| 19 | Outlining the First Test Case | 03:46 | |
| 20 | Adding Tickets to Concerts | 08:20 | |
| 21 | Refusing Orders When There Are No More Tickets | 09:29 | |
| 22 | Finishing the Feature Test | 04:25 | |
| 23 | Cancelling Failed Orders | 05:59 | |
| 24 | Refactoring and Redundant Test Coverage | 07:49 | |
| 25 | Cleaning Up Our Tests | 11:57 | |
| 26 | Asserting Against JSON Responses | 07:32 | |
| 27 | Returning Order Details | 06:22 | |
| 28 | This Design Sucks | 04:39 | |
| 29 | Persisting the Order Amount | 05:05 | |
| 30 | Removing the Need to Cancel Orders | 06:01 | |
| 31 | Preparing for Extraction | 07:06 | |
| 32 | Extracting a Named Constructor | 04:46 | |
| 33 | Precomputing the Order Amount | 05:23 | |
| 34 | Uncovering a New Domain Object | 05:11 | |
| 35 | You Might Not Need a Mocking Framework | 03:48 | |
| 36 | Uh Oh, a Race Condition! | 01:43 | |
| 37 | Requestception | 04:17 | |
| 38 | Hooking into Charges | 05:38 | |
| 39 | Uh Oh, a Segfault! | 03:01 | |
| 40 | Replicating the Failure at the Unit Level | 05:04 | |
| 41 | Reserving Individual Tickets | 07:00 | |
| 42 | Reserved Means Reserved! | 03:58 | |
| 43 | That Guy Stole My Tickets! | 05:59 | |
| 44 | Cancelling Reservations | 05:46 | |
| 45 | Refactoring Mocks to Spies | 06:47 | |
| 46 | A Change in Behavior | 05:53 | |
| 47 | Deleting Stale Tests | 05:38 | |
| 48 | Cleaning up a Loose Variable | 06:48 | |
| 49 | Moving the Email to the Reservation | 07:28 | |
| 50 | Refactoring "Long Parameter List" Using "Preserve Whole Object" | 09:50 | |
| 51 | Green with Feature Envy | 06:12 | |
| 52 | Avoiding Service Classes with Method Injection | 09:04 | |
| 53 | Generating a Valid Payment Token | 10:01 | |
| 54 | Retrieving the Last Charge | 04:05 | |
| 55 | Making a Successful Charge | 04:37 | |
| 56 | Dealing with Lingering State | 12:18 | |
| 57 | Don't Mock What You Don't Own | 09:41 | |
| 58 | Using Groups to Skip Integration Tests | 02:19 | |
| 59 | Handling Invalid Payment Tokens | 03:59 | |
| 60 | The Moment of Truth | 04:28 | |
| 61 | When Interfaces Aren't Enough | 04:29 | |
| 62 | Refactoring Towards Duplication | 12:38 | |
| 63 | Capturing Charges with Callbacks | 08:10 | |
| 64 | Making the Tests Identical | 07:42 | |
| 65 | Extracting a Contract Test | 07:42 | |
| 66 | Extracting the Failure Case | 08:24 | |
| 67 | Upgrading to Laravel 5.4 | 04:49 | |
| 68 | Removing the BrowserKit Dependency | 10:26 | |
| 69 | Sketching Out Order Confirmations | 07:52 | |
| 70 | Driving out the Endpoint | 05:21 | |
| 71 | Asserting Against View Data | 05:46 | |
| 72 | Extracting a Finder Method | 06:51 | |
| 73 | Making Static Data Real | 08:49 | |
| 74 | Deciding What to Test in a View | 08:24 | |
| 75 | Decoupling Data from Presentation | 05:11 | |
| 76 | Fixing the Test Suite | 06:28 | |
| 77 | Stubbing the Interface | 06:28 | |
| 78 | Updating Our Unit Tests | 05:16 | |
| 79 | Confirmation Number Characteristics | 04:48 | |
| 80 | Testing the Confirmation Number Format | 07:29 | |
| 81 | Ensuring Uniqueness | 08:44 | |
| 82 | Refactoring to a Facade | 05:59 | |
| 83 | Promoting Charges to Objects | 17:49 | |
| 84 | Leveraging Our Contract Tests | 11:02 | |
| 85 | Storing Charge Details with Orders | 08:01 | |
| 86 | Deleting More Stale Code | 10:27 | |
| 87 | Feature Test and JSON Updates | 08:27 | |
| 88 | Claiming Tickets When Creating Orders | 09:12 | |
| 89 | Assigning Codes When Claiming Tickets | 10:54 | |
| 90 | The Birthday Problem | 11:55 | |
| 91 | Integrating Hashids | 11:44 | |
| 92 | Dealing with Out of Sync Mocks | 04:21 | |
| 93 | Wiring It All Together | 05:19 | |
| 94 | Ready to Demo | 02:52 | |
| 95 | Using a Fake to Intercept Email | 10:35 | |
| 96 | Testing Mailable Contents | 10:39 | |
| 97 | Cleanup and Demo | 02:40 | |
| 98 | Testing the Login Endpoint | 11:26 | |
| 99 | Should You TDD Simple Templates? | 04:42 | |
| 100 | Namespacing Our Test Suite | 06:31 | |
| 101 | Getting Started with Laravel Dusk | 05:22 | |
| 102 | QA Testing the Login Flow | 06:26 | |
| 103 | Preventing Guests from Adding Concerts | 06:24 | |
| 104 | Adding a Valid Concert | 14:20 | |
| 105 | Validation and Redirects | 09:49 | |
| 106 | Converting Empty Strings to Null | 04:21 | |
| 107 | Reducing Noise with Form Factories | 09:13 | |
| 108 | Connecting Promoters and Concerts | 06:49 | |
| 109 | Autopublishing New Concerts | 05:46 | |
| 110 | Asserting Against View Objects | 12:09 | |
| 111 | Avoiding Sort-Sensitive Tests | 05:47 | |
| 112 | Refactoring Assertions with Macros | 11:39 | |
| 113 | Viewing the Update Form | 05:29 | |
| 114 | The First Update Test | 09:27 | |
| 115 | Driving Out Basic Concert Updates | 09:14 | |
| 116 | Restricting Updates to Unpublished Concerts | 11:31 | |
| 117 | Storing the Intended Ticket Quantity | 06:26 | |
| 118 | Updating the Other Tests | 05:25 | |
| 119 | Refactoring Away Some Test Duplication | 07:52 | |
| 120 | Creating Tickets at Time of Publish | 08:28 | |
| 121 | Custom Factory Classes | 07:44 | |
| 122 | Discovering a New Resource | 07:35 | |
| 123 | Creating Published Concerts | 11:12 | |
| 124 | Adding Concerts without Publishing | 04:03 | |
| 125 | Pushing Logic Out of the View | 08:47 | |
| 126 | More Custom Assertion Fun | 06:20 | |
| 127 | Calculating Tickets Sold | 08:22 | |
| 128 | Making the Progress Bar Work | 08:58 | |
| 129 | Total Revenue and a Relationship Bug | 08:40 | |
| 130 | Creating a Custom OrderFactory | 11:28 | |
| 131 | Asserting Against Sort Order | 12:15 | |
| 132 | Splitting Large Tests | 03:41 | |
| 133 | Storing Messages for Attendees | 12:31 | |
| 134 | Confirming That a Job Was Dispatched | 09:27 | |
| 135 | Unit Testing the Job | 18:29 | |
| 136 | Refactoring for Robustness | 11:16 | |
| 137 | Mailable Testing Refresher and Demo | 04:11 | |
| 138 | Upgrading to Laravel 5.5 | 07:41 | |
| 139 | Faking Uploads and File Systems | 10:43 | |
| 140 | Storing Files and Comparing Content | 09:16 | |
| 141 | Validating Poster Images | 07:45 | |
| 142 | Optional Files and the Null Object Pattern | 05:39 | |
| 143 | Testing Events | 10:41 | |
| 144 | Testing the Event Listener | 11:42 | |
| 145 | Resizing the Posted Image | 12:26 | |
| 146 | Optimizing the Image Size | 10:51 | |
| 147 | Upgrading Laravel and Deleting Some Code | 03:40 | |
| 148 | Viewing an Unused Invitation | 10:25 | |
| 149 | Viewing Used or Invalid Invitations | 07:29 | |
| 150 | Registering with a Valid Invitation | 12:46 | |
| 151 | Registering with an Invalid Invitation | 05:20 | |
| 152 | Validating Promoter Registration | 05:54 | |
| 153 | Testing a Console Command | 17:40 | |
| 154 | Sending Promoters an Invitation Email | 05:52 | |
| 155 | Test-Driving the Email Contents | 07:53 | |
| 156 | Getting Cozy with Stripe Connect | 10:55 | |
| 157 | Authorizing with Stripe | 10:05 | |
| 158 | Exchanging Tokens | 17:44 | |
| 159 | Unit Testing Middleware | 13:29 | |
| 160 | Testing Callbacks with Invokables | 09:43 | |
| 161 | Testing That Middleware Is Applied | 08:16 | |
| 162 | Updating Factories and a Speed Trick | 03:30 | |
| 163 | Total Charges for a Specific Account | 10:43 | |
| 164 | Paying Promoters Directly | 07:47 | |
| 165 | Splitting Payments with Stripe | 16:53 | |
| 166 | It's Alive | 04:36 |
Unlock unlimited learning
Get instant access to all 165 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.
Learn more about subscriptionComments
0 commentsWant to join the conversation?
Sign in to commentSimilar courses
Real-Time Data with Laravel Reverb and Vue.js
Sources: vueschool.io
Would you like to add real data handling features to your applications on Laravel and Vue.js? Whether you are creating a notification system, a chat in...
44 minutes 56 seconds
Laravel 8 PHP Framework A - Z Build Professional Ecommerce
Sources: udemy
As i told you this complete project course which beings you to Beginner to Advance level by creating complete most advanced Ecommerce Project. You will able to understand how to...
71 hours 53 minutes 34 seconds
Testing Laravel with PHPUnit
Sources: spatie.be
In this course, Brent will help you get started testing a Laravel application. He'll cover how to get started, how to test every functionality in Laravel, and g
2 hours 42 minutes 59 seconds
Let's Build A Forum with Laravel and TDD
Sources: Laracasts
A forum is a deceptively complex thing. Sure, it's made up of threads and replies, but what else might exist as part of a forum? What about profiles, or thread
19 hours 30 minutes 20 seconds
Facebook Clone with Laravel, TDD, Vue & Tailwind CSS
Sources: udemy
Building modern applications requires a specialized toolbox of skills and tools. We are going to be using Facebook as an example to build a social network platform from scratch....
9 hours 9 minutes 44 seconds