Introduction to Testing in Go (Golang)

This course is focused on writing unit and integration tests in Go, a modern, type safe, compiled, and extremely fast programming language.

Course Summary

Who Is This Course For

  • Developers working in Go who want to level up their testing skills. 

Requirements

  • A basic understanding of to use Go programming language.

What You Will Learn

  • Learn how to write unit tests in Go
  • Learn how to create test suites in Go 
  • Learn how to create a simple REST API in Go and test its endpoints
  • Learn how to write tests that cover multiple scenarios with table tests
  • Learn how to write integration tests in Go, and simplify them using Docker
  • Learn how to create a simple web application and test handlers, middleware, database, and more
  • Learn to to authenticate using JWT Tokens (and refresh tokens) and completely test all functionality

Description

Writing unit tests and integration tests is one of the most-neglected aspects of software development. All too often, a developer will find him or herself say "but it works on my computer!" when a project is presumed finished, only to discover that once taken out of the development environment, things don't work as expected. Well written unit tests and integration tests help to solve this problem, and in fact almost without exception will reduce overall development time, rather than adding to it. In addition, well-tested code almost always requires less maintenance, and the end product will have less down time. This course is focused on writing unit and integration tests in Go, a modern, type safe, compiled, and extremely fast programming language. It it is ideally suited for building safe, scalable, incredibly fast web applications, and it has powerful testing tools built right in. In this course, we will build four simple applications, and thoroughly test them:

  • A command line application (CLI) that tries to determine if a user-entered number is prime or not;
  • A simple web application that allows a user to log in and upload a profile picture; 
  • A simple REST API built on the same code base as the web application which allows users to authenticate using JWT tokens and perform operations against a Postgres database. We'll go through the entire authentication process, including using refresh tokens, and thoroughly test all aspects of the code.
  •  A simple Single Page Web Application (SPA), written in Vanilla JavaScript, that demonstrates how to use JWT and Refresh Tokens with a SPA, and how to test that functionality.

For each of these projects, we will learn how to write unit tests for all functionality. We will learn how to test (among other things):

  • Application routes Application handlers 
  • How to test multiple scenarios by writing and using table tests 
  • Database operations (using the Repository pattern) 
  • Application middleware User authentication (with sessions) 
  • User authentication (with JWT tokens) 
  • JWT token generation and validation 
  • Refresh token generation and validation 
  • Testing user input 
  • Writing to the terminal 
  • Adding cookies to a request 
  • Reading cookies from a response

By the end of this course, you will have a solid understanding of how to write effective tests, and how to write testable code.

Course Pricing

One time Payment

$16.99 CAD

Enroll Now

Course Curriculum

Trevor Sawler

Trevor has more than twenty years of experience in professional software development, and over 30 years of experience as a university professor. As an entrepreneur, he has worked with a broad range of clients, including Thomson Nelson, Hewlett Packard, the Royal Bank of Canada, Keybank, Sprint, and many, many others. He also has extensive management and project management experience. He has led teams of fifty developers and artists on multi-million dollar projects, and much smaller teams on much smaller projects. Trevor continues to work projects for a variety of clients every day. As a professor, he has taught in a wide variety of course areas, including Computer Science, English, Irish, and American literature, and a number of "crossover" courses that bridge the liberal arts and technological fields. He has won regional, national, and international awards for his work in the IT field, and has also won awards for his teaching and research as a University professor.