Этот материал находится в платной подписке. Оформи премиум подписку и смотри или слушай Testing with Go, а также все другие курсы, прямо сейчас!
Премиум
  • Урок 1. 00:03:13
    1 - What is a test?
  • Урок 2. 00:09:37
    2 - Why do tests matter?
  • Урок 3. 00:25:30
    3 - Writing great tests
  • Урок 4. 00:06:57
    4 - Testing with a main package
  • Урок 5. 00:08:22
    5 - Testing with Go's testing package
  • Урок 6. 00:07:03
    6 - What happens when we run go test
  • Урок 7. 00:05:46
    7 - File naming conventions
  • Урок 8. 00:04:48
    8 - Function naming conventions
  • Урок 9. 00:05:53
    9 - Variable naming conventions
  • Урок 10. 00:08:19
    10 - Ways to signal test failure
  • Урок 11. 00:17:38
    11 - When to use Error vs Fatal
  • Урок 12. 00:17:41
    12 - Writing useful failure messages
  • Урок 13. 00:06:50
    13 - A basic example as a test case
  • Урок 14. 00:05:49
    14 - Viewing examples in the docs
  • Урок 15. 00:04:28
    15 - Unordered example output
  • Урок 16. 00:15:29
    16 - Complex examples
  • Урок 17. 00:04:20
    17 - Examples in the standard library
  • Урок 18. 00:10:47
    18 - Table driven tests
  • Урок 19. 00:05:01
    19 - Generating table driven test code
  • Урок 20. 00:10:47
    20 - Subtests
  • Урок 21. 00:13:40
    21 - Shared setup and teardown
  • Урок 22. 00:10:09
    22 - TestMain
  • Урок 23. 00:10:10
    23 - Running tests in parallel
  • Урок 24. 00:04:02
    24 - Parallel subtests
  • Урок 25. 00:05:02
    25 - Setup and teardown with parallel subtests
  • Урок 26. 00:12:54
    26 - Gotchas with closures and parallel tests
  • Урок 27. 00:08:33
    27 - What is a race condition?
  • Урок 28. 00:06:10
    28 - The race detection flag
  • Урок 29. 00:20:38
    29 - Testing explicitly for race conditions
  • Урок 30. 00:07:45
    30 - Simple comparisons
  • Урок 31. 00:03:11
    31 - Reflect's DeepEqual function
  • Урок 32. 00:02:59
    32 - Golden files (brief overview)
  • Урок 33. 00:22:38
    33 - Helper comparison functions
  • Урок 34. 00:18:53
    34 - Building things with helper functions
  • Урок 35. 00:04:50
    35 - Generating test data
  • Урок 36. 00:05:56
    36 - Go's testing/quick package
  • Урок 37. 00:09:36
    37 - Public testing utilities
  • Урок 38. 00:05:29
    38 - Running specific tests
  • Урок 39. 00:04:41
    39 - Running tests for subpackages
  • Урок 40. 00:03:06
    40 - Skipping tests
  • Урок 41. 00:04:02
    41 - Custom flags
  • Урок 42. 00:05:26
    42 - Build tags
  • Урок 43. 00:22:40
    43 - Benchmarks
  • Урок 44. 00:02:22
    44 - Verbose testing
  • Урок 45. 00:17:01
    45 - Code coverage
  • Урок 46. 00:04:19
    46 - The timeout flag
  • Урок 47. 00:11:00
    47 - Parallel testing flags
  • Урок 48. 00:06:36
    48 - Differences between external and internal tests
  • Урок 49. 00:06:15
    49 - How to write internal and external tests
  • Урок 50. 00:09:40
    50 - When to use external tests
  • Урок 51. 00:09:44
    51 - Exporting unexported vars, funcs, and types
  • Урок 52. 00:08:14
    52 - When to use internal tests
  • Урок 53. 00:05:03
    53 - Overview of test types
  • Урок 54. 00:01:50
    54 - Unit tests
  • Урок 55. 00:09:15
    55 - Integration tests
  • Урок 56. 00:06:35
    56 - End-to-end tests
  • Урок 57. 00:09:51
    57 - Which test type should I use?
  • Урок 58. 00:09:23
    58 - What is global state?
  • Урок 59. 00:06:48
    59 - Testing with global state (if you must)
  • Урок 60. 00:04:44
    60 - What is dependency injection (DI)?
  • Урок 61. 00:09:21
    61 - DI enables implementation agnostic code
  • Урок 62. 00:12:08
    62 - DI makes testing easier
  • Урок 63. 00:10:58
    63 - DI and useful zero values
  • Урок 64. 00:08:16
    64 - Removing global state with DI
  • Урок 65. 00:14:19
    65 - Package level functions
  • Урок 66. 00:11:15
    66 - Summary of dependency injection
  • Урок 67. 00:05:52
    67 - What is mocking?
  • Урок 68. 00:10:34
    68 - Types of mock objects
  • Урок 69. 00:12:44
    69 - Why do we mock?
  • Урок 70. 00:05:08
    70 - Third party packages
  • Урок 71. 00:15:57
    71 - Faking APIs
  • Урок 72. 00:14:14
    72 - What are interface test suites?
  • Урок 73. 00:08:44
    73 - Interface test suite setup and teardown
  • Урок 74. 00:06:24
    74 - Interface test suites in the wild
  • Урок 75. 00:11:29
    75 - httptest.ResponseRecorder
  • Урок 76. 00:04:47
    76 - httptest.Server
  • Урок 77. 00:18:51
    77 - Building HTTP helpers
  • Урок 78. 00:10:19
    78 - What are golden files?
  • Урок 79. 00:04:25
    79 - Updating golden files
  • Урок 80. 00:04:06
    80 - What is a subprocess?
  • Урок 81. 00:07:44
    81 - Running the subprocess in tests
  • Урок 82. 00:05:58
    82 - Mocking simple subprocesses
  • Урок 83. 00:24:06
    83 - Mocking complex subprocesses
  • Урок 84. 00:07:08
    84 - Why are dates and times problematic?
  • Урок 85. 00:16:12
    85 - Inject your time and sleep functions
  • Урок 86. 00:14:45
    86 - Testing timeouts
  • Урок 87. 00:03:22
    87 - Colorizing your terminal output
  • Урок 88. 00:01:31
    88 - Coverage info function
  • Урок 89. 00:06:28
    1 - Topics covered in the form project
  • Урок 90. 00:11:33
    2 - The first test
  • Урок 91. 00:05:10
    3 - Our first bug
  • Урок 92. 00:05:54
    4 - Handling multiple fields
  • Урок 93. 00:07:53
    5 - Field values
  • Урок 94. 00:18:52
    6 - Checking for specific attributes in a test
  • Урок 95. 00:05:11
    7 - Unexported fields
  • Урок 96. 00:08:52
    8 - Non-structs are invalid
  • Урок 97. 00:03:51
    9 - Pointers to structs
  • Урок 98. 00:16:52
    10 - Supporting more types
  • Урок 99. 00:17:36
    11 - Generating HTML
  • Урок 100. 00:17:19
    12 - Discussing struct tags and tests
  • Урок 101. 00:25:23
    13 - Parsing struct tags
  • Урок 102. 00:26:50
    14 - Applying struct tags
  • Урок 103. 00:16:02
    15 - Golden test files
  • Урок 104. 00:08:00
    16 - Struct tag tests in TestHTML
  • Урок 105. 00:19:29
    17 - Rendering errors: adding a test
  • Урок 106. 00:06:22
    18 - Rendering errors: implementing
  • Урок 107. 00:09:56
    19 - Detecting breaking changes with tests
  • Урок 108. 00:12:41
    1 - The first test
  • Урок 109. 00:09:25
    2 - Creating a customer
  • Урок 110. 00:02:26
    3 - Versioning our client
  • Урок 111. 00:02:37
    4 - Making the API key a flag
  • Урок 112. 00:04:46
    5 - Improving our customer data
  • Урок 113. 00:15:33
    6 - The charge endpoint
  • Урок 114. 00:23:15
    7 - Custom error type
  • Урок 115. 00:20:01
    8 - Parsing stripe errors
  • Урок 116. 00:14:58
    9 - Customer endpoint errors
  • Урок 117. 00:11:06
    10 - Starting on unit tests
  • Урок 118. 00:14:40
    11 - Allowing custom http clients
  • Урок 119. 00:23:24
    12 - Creating a recorder client
  • Урок 120. 00:12:02
    13 - Persisting recorded responses
  • Урок 121. 00:02:24
    14 - Making our tests cross-platform
  • Урок 122. 00:12:54
    15 - Serving recorded responses
  • Урок 123. 00:09:53
    16 - Unique customer per charge subtest
  • Урок 124. 00:10:40
    17 - Adding tests for specific errors
  • Урок 125. 00:12:56
    18 - Helper functions
  • Урок 126. 00:15:02
    1 - What to expect
  • Урок 127. 00:12:43
    2 - App overview
  • Урок 128. 00:14:42
    3 - Initial db tests
  • Урок 129. 00:12:18
    4 - Creating the db.Open function
  • Урок 130. 00:07:09
    5 - What about mocks
  • Урок 131. 00:23:02
    6 - Test harnesses and helpers
  • Урок 132. 00:22:33
    7 - Reviewing tests
  • Урок 133. 00:05:21
    8 - Testing specific times
  • Урок 134. 00:12:04
    9 - First pass at refactoring the db pkg
  • Урок 135. 00:32:31
    10 - Updating db tests
  • Урок 136. 01:03:07
    11 - Testing the order flow
  • Урок 137. 00:17:03
    12 - Extracting code for unit testing
  • Урок 138. 00:16:15
    13 - Extracting the active campaign handler
  • Урок 139. 00:26:06
    14 - Unit testing the active campaign handler
  • Урок 140. 00:24:22
    15 - Table driven testing the active campaign handler
  • Урок 141. 00:12:36
    16 - Refactoring campaign middleware
  • Урок 142. 00:21:42
    17 - Unit testing the campaign middleware
  • Урок 143. 00:06:53
    18 - Starting the orders handler
  • Урок 144. 00:18:23
    19 - Testing the new order handler
  • Урок 145. 00:09:44
    20 - Refactor Create order handler
  • Урок 146. 00:20:00
    21 - Test: Create order handler
  • Урок 147. 00:15:20
    22 - Integration testing with Stripe
  • Урок 148. 00:07:25
    23 - Testing for specific Stripe failures
  • Урок 149. 00:31:08
    24 - Another form of table driven tests
  • Урок 150. 00:04:03
    25 - Refactor: Order middleware
  • Урок 151. 00:06:08
    26 - Test: Order middleware
  • Урок 152. 00:06:36
    27 - Refactor: Show order handler
  • Урок 153. 00:33:32
    28 - Test: Show order handler
  • Урок 154. 00:10:21
    29 - Don't get too clever
  • Урок 155. 00:12:41
    30 - Integration testing the show order handler
  • Урок 156. 00:09:40
    31 - Removing sql from the confirm order handler
  • Урок 157. 00:12:53
    32 - Testing the database confirm order function
  • Урок 158. 00:04:41
    33 - Refactor: Confirm order handler
  • Урок 159. 00:14:34
    34 - Test: Confirm order handler with same address
  • Урок 160. 00:06:40
    35 - Test: Confirm order handler when campaign isnt found
  • Урок 161. 00:29:01
    36 - Refactoring and finishing the confirm order handler unit tests
  • Урок 162. 00:15:32
    37 - Integration test: Confirm order handler
  • Урок 163. 00:06:07
    38 - Setting the stripe secret key via ENV variable
  • Урок 164. 00:13:05
    39 - Refactoring the routing code in main
  • Урок 165. 00:11:33
    40 - Testing our asset directory
  • Урок 166. 00:09:18
    41 - Mocks for testing our router
  • Урок 167. 00:10:06
    42 - Testing the show order route
  • Урок 168. 00:08:14
    43 - Table driven router testing
  • Урок 169. 00:07:05
    44 - Additional router testing
  • Урок 170. 00:16:18
    45 - Removing the tempDB type
  • Урок 171. 00:22:27
    46 - Removing the DefaultDatabase package variable
  • Урок 172. 00:10:27
    47 - Cleanup
  • Урок 173. 00:08:58
    48 - Wrapping up