A comprehensive step-by-step video course on designing robust Laravel applications with TDD.
Watch the courseWhen I was first learning how to test, every example I could find made it seem fairly straightforward.
"Assert 5+5 equals 10? Sure, piece of cake!"
But as soon as I tried to test a real application, I was paralyzed.
"What's the very first test I'm supposed to write for this brand new app?"
"How do I test that this email gets sent?"
"What about this code that needs to talk to the Stripe API?"
Simple examples are fine for learning the basics, but I wanted to know how to apply this stuff to real products that I was actually building on the job.
I’ve spent the last 5 years figuring out how to build web applications with TDD; piecing things together from every resource I could get my hands on.
Test-Driven Laravel is the course I wish I'd had.
Ever since Adam helped tweak my approach to testing a bit, I really enjoy writing them a lot more.
Taylor Otwell, creator of Laravel
The biggest objective of this course is to teach you how to TDD something real; not just another cookie-cutter to-do app.
We cover fundamentals like:
...as well as hard topics, like:
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.
Together we'll build TicketBeast, a platform for local concert promoters to sell tickets to their events.
Over the course of 166 lessons spanning just under 22 hours of content, we'll implement features like:
It’s huge, but it’s the most comprehensive TDD resource I’ve ever seen.
Intro
Browser Testing vs Endpoint Testing
Outlining the First Purchasing Test
Faking the Payment Gateway
Adding Tickets to Orders
Encapsulating Relationship Logic in the Model
Getting Started with Validation Testing
Reducing Duplication with Custom Assertions
Handling Failed Charges
Preventing Ticket Sales to Unpublished Concerts
Upgrading Laravel and Deleting Some Code
Viewing an Unused Invitation
Viewing Used or Invalid Invitations
Registering with a Valid Invitation
Registering with an Invalid Invitation
Validating Promoter Registration
Testing a Console Command
Sending Promoters an Invitation Email
Test-Driving the Email Contents
Getting Cozy with Stripe Connect
Authorizing with Stripe
Exchanging Tokens
Unit Testing Middleware
Testing Callbacks with Invokables
Testing That Middleware Is Applied
Updating Factories and a Speed Trick
Total Charges for a Specific Account
Paying Promoters Directly
Splitting Payments with Stripe
It's Alive!
Learn everything you need to know about TDD in one comprehensive resource.

Do I need an account?
No. You can watch the course without signing up. Existing students can still log in if they prefer.
Can I download the videos?
Yes. Every lesson can be streamed or downloaded for offline viewing.
How is my progress saved?
Your progress can be stored locally in your browser without an account. Clearing browser data may reset it; existing students may optionally log in.
Which Laravel version does the course use?
The course begins with Laravel 5.3 and follows upgrades that were current when it was recorded. It remains useful for learning TDD, but framework APIs and tooling have changed. The course is provided as-is without ongoing updates or individual support.
Where can I find the source code?
Use the “View Code” link below each lesson to see the corresponding changes on GitHub.
Hey! I'm @adamwathan, author of Refactoring to Collections, host of Full Stack Radio, and creator of Nitpick CI.
I teach everything I know on my blog, through screencasts, and at conferences around the world.