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
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
Master Laravel for Beginners Intermediate
Sources: udemy
Laravel is becoming the most popular choice among PHP developers these days. It's easiest to start with, most fun to use and very performant tool and ecosystem of tools, that ju...
54 hours 41 minutes 57 seconds
React Js A-Z With Laravel - For Beginner to Advanced Level
Sources: udemy
This React Js A-Z With Laravel Course will help you to become a Full Stack Web Developer. React has rapidly become one of the most powerful tools for building W
68 hours 1 minute 33 seconds
Master Laravel, Vue 3 & Inertia Full Stack 2023
Sources: udemy
Learn Laravel together with Vue.js in this brand new, full-stack, project based course! Learn how to create a robust API in Laravel and a Single Page Application frontend in Vue...
35 hours 53 minutes 40 seconds
Laravel with React JS - Build Twitter Like Real Time Web App
Sources: udemy
Do you want to use React Js with Laravel to build powerful web applications? How about building a twitter like real time web app while learning Modern JavaScrip
4 hours 56 minutes 37 seconds
Ultimate PHP, Laravel, CSS & Sass! Learn PHP, Laravel & Sass
Sources: udemy
Have you have been taking courses that are not up to date or courses that after finishing them you will immediately know that is not what they promised to be in
95 hours 30 minutes