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 commentsSimilar courses

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 

Scaling Laravel
Sources: serversforhackers.com
The first time I put code into a load balanced environment, I accidentally gave away thousands of dollars in prizes within a few minutes. After pulling an all-nighter to get the...
9 hours 29 minutes 45 seconds 

Laravel From Scratch Course | Build A Job Listing Application
Sources: Brad Traversy
Learn Laravel from scratch by creating and deploying a full-fledged job site, including authentication, authorization, and saving job listings to bookmarks...
13 hours 20 minutes 36 seconds 

Paginated Vue Components with Laravel
Sources: Codecourse
Want flexible paginated Vue components that work with any data? Let's make this easy.
52 minutes 56 seconds 

Laravel 8 advanced tips and tricks beginner and intermediate
Sources: udemy
The latest version of laravel is 8 so during this course you will learn the newest and the short ways to write a Laravel project or app . Laravel until now have
1 hour 56 minutes 50 seconds 
Want to join the conversation?
Sign in to comment