• Урок 1. 00:11:30
    What Do We Build First?
  • Урок 2. 00:09:06
    Sketching out Our First Test
  • Урок 3. 00:16:42
    Getting to Green
  • Урок 4. 00:11:03
    Unit Testing Presentation Logic
  • Урок 5. 00:07:16
    Refactoring for Speed
  • Урок 6. 00:06:56
    Hiding Unpublished Concerts
  • Урок 7. 00:05:50
    Testing Query Scopes
  • Урок 8. 00:04:10
    Factory States
  • Урок 9. 00:01:02
    Introducing the Next Feature
  • Урок 10. 00:09:47
    Browser Testing vs Endpoint Testing
  • Урок 11. 00:06:23
    Outlining the First Purchasing Test
  • Урок 12. 00:12:23
    Faking the Payment Gateway
  • Урок 13. 00:05:32
    Adding Tickets to Orders
  • Урок 14. 00:05:16
    Encapsulating Relationship Logic in the Model
  • Урок 15. 00:06:56
    Getting Started with Validation Testing
  • Урок 16. 00:05:30
    Reducing Duplication with Custom Assertions
  • Урок 17. 00:07:00
    Handling Failed Charges
  • Урок 18. 00:06:40
    Preventing Ticket Sales to Unpublished Concerts
  • Урок 19. 00:03:46
    Outlining the First Test Case
  • Урок 20. 00:08:20
    Adding Tickets to Concerts
  • Урок 21. 00:09:29
    Refusing Orders When There Are No More Tickets
  • Урок 22. 00:04:25
    Finishing the Feature Test
  • Урок 23. 00:05:59
    Cancelling Failed Orders
  • Урок 24. 00:07:49
    Refactoring and Redundant Test Coverage
  • Урок 25. 00:11:57
    Cleaning Up Our Tests
  • Урок 26. 00:07:32
    Asserting Against JSON Responses
  • Урок 27. 00:06:22
    Returning Order Details
  • Урок 28. 00:04:39
    This Design Sucks
  • Урок 29. 00:05:05
    Persisting the Order Amount
  • Урок 30. 00:06:01
    Removing the Need to Cancel Orders
  • Урок 31. 00:07:06
    Preparing for Extraction
  • Урок 32. 00:04:46
    Extracting a Named Constructor
  • Урок 33. 00:05:23
    Precomputing the Order Amount
  • Урок 34. 00:05:11
    Uncovering a New Domain Object
  • Урок 35. 00:03:48
    You Might Not Need a Mocking Framework
  • Урок 36. 00:01:43
    Uh Oh, a Race Condition!
  • Урок 37. 00:04:17
    Requestception
  • Урок 38. 00:05:38
    Hooking into Charges
  • Урок 39. 00:03:01
    Uh Oh, a Segfault!
  • Урок 40. 00:05:04
    Replicating the Failure at the Unit Level
  • Урок 41. 00:07:00
    Reserving Individual Tickets
  • Урок 42. 00:03:58
    Reserved Means Reserved!
  • Урок 43. 00:05:59
    That Guy Stole My Tickets!
  • Урок 44. 00:05:46
    Cancelling Reservations
  • Урок 45. 00:06:47
    Refactoring Mocks to Spies
  • Урок 46. 00:05:53
    A Change in Behavior
  • Урок 47. 00:05:38
    Deleting Stale Tests
  • Урок 48. 00:06:48
    Cleaning up a Loose Variable
  • Урок 49. 00:07:28
    Moving the Email to the Reservation
  • Урок 50. 00:09:50
    Refactoring "Long Parameter List" Using "Preserve Whole Object"
  • Урок 51. 00:06:12
    Green with Feature Envy
  • Урок 52. 00:09:04
    Avoiding Service Classes with Method Injection
  • Урок 53. 00:10:01
    Generating a Valid Payment Token
  • Урок 54. 00:04:05
    Retrieving the Last Charge
  • Урок 55. 00:04:37
    Making a Successful Charge
  • Урок 56. 00:12:18
    Dealing with Lingering State
  • Урок 57. 00:09:41
    Don't Mock What You Don't Own
  • Урок 58. 00:02:19
    Using Groups to Skip Integration Tests
  • Урок 59. 00:03:59
    Handling Invalid Payment Tokens
  • Урок 60. 00:04:28
    The Moment of Truth
  • Урок 61. 00:04:29
    When Interfaces Aren't Enough
  • Урок 62. 00:12:38
    Refactoring Towards Duplication
  • Урок 63. 00:08:10
    Capturing Charges with Callbacks
  • Урок 64. 00:07:42
    Making the Tests Identical
  • Урок 65. 00:07:42
    Extracting a Contract Test
  • Урок 66. 00:08:24
    Extracting the Failure Case
  • Урок 67. 00:04:49
    Upgrading to Laravel 5.4
  • Урок 68. 00:10:26
    Removing the BrowserKit Dependency
  • Урок 69. 00:07:52
    Sketching Out Order Confirmations
  • Урок 70. 00:05:21
    Driving out the Endpoint
  • Урок 71. 00:05:46
    Asserting Against View Data
  • Урок 72. 00:06:51
    Extracting a Finder Method
  • Урок 73. 00:08:49
    Making Static Data Real
  • Урок 74. 00:08:24
    Deciding What to Test in a View
  • Урок 75. 00:05:11
    Decoupling Data from Presentation
  • Урок 76. 00:06:28
    Fixing the Test Suite
  • Урок 77. 00:06:28
    Stubbing the Interface
  • Урок 78. 00:05:16
    Updating Our Unit Tests
  • Урок 79. 00:04:48
    Confirmation Number Characteristics
  • Урок 80. 00:07:29
    Testing the Confirmation Number Format
  • Урок 81. 00:08:44
    Ensuring Uniqueness
  • Урок 82. 00:05:59
    Refactoring to a Facade
  • Урок 83. 00:17:49
    Promoting Charges to Objects
  • Урок 84. 00:11:02
    Leveraging Our Contract Tests
  • Урок 85. 00:08:01
    Storing Charge Details with Orders
  • Урок 86. 00:10:27
    Deleting More Stale Code
  • Урок 87. 00:08:27
    Feature Test and JSON Updates
  • Урок 88. 00:09:12
    Claiming Tickets When Creating Orders
  • Урок 89. 00:10:54
    Assigning Codes When Claiming Tickets
  • Урок 90. 00:11:55
    The Birthday Problem
  • Урок 91. 00:11:44
    Integrating Hashids
  • Урок 92. 00:04:21
    Dealing with Out of Sync Mocks
  • Урок 93. 00:05:19
    Wiring It All Together
  • Урок 94. 00:02:52
    Ready to Demo
  • Урок 95. 00:10:35
    Using a Fake to Intercept Email
  • Урок 96. 00:10:39
    Testing Mailable Contents
  • Урок 97. 00:02:40
    Cleanup and Demo
  • Урок 98. 00:11:26
    Testing the Login Endpoint
  • Урок 99. 00:04:42
    Should You TDD Simple Templates?
  • Урок 100. 00:06:31
    Namespacing Our Test Suite
  • Урок 101. 00:05:22
    Getting Started with Laravel Dusk
  • Урок 102. 00:06:26
    QA Testing the Login Flow
  • Урок 103. 00:06:24
    Preventing Guests from Adding Concerts
  • Урок 104. 00:14:20
    Adding a Valid Concert
  • Урок 105. 00:09:49
    Validation and Redirects
  • Урок 106. 00:04:21
    Converting Empty Strings to Null
  • Урок 107. 00:09:13
    Reducing Noise with Form Factories
  • Урок 108. 00:06:49
    Connecting Promoters and Concerts
  • Урок 109. 00:05:46
    Autopublishing New Concerts
  • Урок 110. 00:12:09
    Asserting Against View Objects
  • Урок 111. 00:05:47
    Avoiding Sort-Sensitive Tests
  • Урок 112. 00:11:39
    Refactoring Assertions with Macros
  • Урок 113. 00:05:29
    Viewing the Update Form
  • Урок 114. 00:09:27
    The First Update Test
  • Урок 115. 00:09:14
    Driving Out Basic Concert Updates
  • Урок 116. 00:11:31
    Restricting Updates to Unpublished Concerts
  • Урок 117. 00:06:26
    Storing the Intended Ticket Quantity
  • Урок 118. 00:05:25
    Updating the Other Tests
  • Урок 119. 00:07:52
    Refactoring Away Some Test Duplication
  • Урок 120. 00:08:28
    Creating Tickets at Time of Publish
  • Урок 121. 00:07:44
    Custom Factory Classes
  • Урок 122. 00:07:35
    Discovering a New Resource
  • Урок 123. 00:11:12
    Creating Published Concerts
  • Урок 124. 00:04:03
    Adding Concerts without Publishing
  • Урок 125. 00:08:47
    Pushing Logic Out of the View
  • Урок 126. 00:06:20
    More Custom Assertion Fun
  • Урок 127. 00:08:22
    Calculating Tickets Sold
  • Урок 128. 00:08:58
    Making the Progress Bar Work
  • Урок 129. 00:08:40
    Total Revenue and a Relationship Bug
  • Урок 130. 00:11:28
    Creating a Custom OrderFactory
  • Урок 131. 00:12:15
    Asserting Against Sort Order
  • Урок 132. 00:03:41
    Splitting Large Tests
  • Урок 133. 00:12:31
    Storing Messages for Attendees
  • Урок 134. 00:09:27
    Confirming That a Job Was Dispatched
  • Урок 135. 00:18:29
    Unit Testing the Job
  • Урок 136. 00:11:16
    Refactoring for Robustness
  • Урок 137. 00:04:11
    Mailable Testing Refresher and Demo
  • Урок 138. 00:07:41
    Upgrading to Laravel 5.5
  • Урок 139. 00:10:43
    Faking Uploads and File Systems
  • Урок 140. 00:09:16
    Storing Files and Comparing Content
  • Урок 141. 00:07:45
    Validating Poster Images
  • Урок 142. 00:05:39
    Optional Files and the Null Object Pattern
  • Урок 143. 00:10:41
    Testing Events
  • Урок 144. 00:11:42
    Testing the Event Listener
  • Урок 145. 00:12:26
    Resizing the Posted Image
  • Урок 146. 00:10:51
    Optimizing the Image Size
  • Урок 147. 00:03:40
    Upgrading Laravel and Deleting Some Code
  • Урок 148. 00:10:25
    Viewing an Unused Invitation
  • Урок 149. 00:07:29
    Viewing Used or Invalid Invitations
  • Урок 150. 00:12:46
    Registering with a Valid Invitation
  • Урок 151. 00:05:20
    Registering with an Invalid Invitation
  • Урок 152. 00:05:54
    Validating Promoter Registration
  • Урок 153. 00:17:40
    Testing a Console Command
  • Урок 154. 00:05:52
    Sending Promoters an Invitation Email
  • Урок 155. 00:07:53
    Test-Driving the Email Contents
  • Урок 156. 00:10:55
    Getting Cozy with Stripe Connect
  • Урок 157. 00:10:05
    Authorizing with Stripe
  • Урок 158. 00:17:44
    Exchanging Tokens
  • Урок 159. 00:13:29
    Unit Testing Middleware
  • Урок 160. 00:09:43
    Testing Callbacks with Invokables
  • Урок 161. 00:08:16
    Testing That Middleware Is Applied
  • Урок 162. 00:03:30
    Updating Factories and a Speed Trick
  • Урок 163. 00:10:43
    Total Charges for a Specific Account
  • Урок 164. 00:07:47
    Paying Promoters Directly
  • Урок 165. 00:16:53
    Splitting Payments with Stripe
  • Урок 166. 00:04:36
    It's Alive