Урок 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