Ilija Eftimov

A human, interested in building products and software.

Testing in Go Course

Table of Contents

  1. Test when there’s a DB connection involved, using an actual database.

    Description: Learn how to write idiomatic tests that rely on a database connection. Find out how to insert data to the test database, how to clean it up after every test and learn about test isolation. Learn different strategies of automatic test database clean up.

  2. Test when there’s a database involved, without relying on an actual database.

    Description: Learn how to write idiomatic tests that DON'T rely on a database connection. Find out different strategies of substituting an connection, understand composition choices and tradeoffs, learn about test isolation.

  3. Test when there’s a 3rd party service involved.

    Description: We live in a connected world, our applications talk to many APIs. Learn how to test the code that talks to 3rd party APIs, what are the different approaches to testing such code, how can you use or avoid mocks, and more.

  4. Test when an API client (3rd party library) is involved.

    Description: Often APIs come with pre-built API clients or SDK. While they make integrations easier, testing your code can become tricky, especially because you rely on a 3rd party library. In this video, we will learn what are the pitfalls to testing such code and how we can use tried and tested approaches to such situations.

  5. Test when there’s file I/O involved.

    Description: Our applications often create files and write to them, in this video we will explore different ways to test code that does I/O.

  6. Test when time is involved.

    Description: Time is essential in almost all applications. You might be checking for an entity to expire, or maybe an event to begin. Regardless, time is a necessity and we have know how to code that utilizes time. In this video we will look at different challenges when testing time, and ways to overcome them.

  7. Test when SMTP is involved.

    Description: Golang's standard library ships with a package for sending emails using SMTP (https://golang.org/pkg/net/smtp). While this is powerful feature of the standard library, it brings certain challenges to testing code that uses it. In this video we will explore ways to do just that, in an efficient and idiomatic way.

  8. Test code that uploads to S3.

    Description: The days of uploading files on your application's web servers are long gone. S3 is a very popular object storage solution, by Amazon Web Services, that solves this problem in the age of the cloud. But it also brings its own challenges, such as properly testing your code that uploads to S3. In this video we will see how to do exactly that.

  9. Test code that uses Web Sockets.

    Description: Web Sockets allow us to open a two-way interactive communication session between the user's browser and a server. There are multiple implementation of the WebSocket standard (https://tools.ietf.org/html/rfc6455) for Golang, but we will focus on the most popular one (https://github.com/gorilla/websocket). We will explore what challenges WebSockets in Golang bring and how we can better test them.

  10. Test when OS signal and processes are involved.

    Description: Go is a popular choice of tool when it comes to writing system processes, daemons, CLIs and generally programs running on servers. To gracefully shut down a Go process, the program must know how to handle incoming OS signals, how to clean up after itself and how to gracefully shut down. All of this essential code must be well tested, which is what we will learn how to do in this video.