Building APIs doing Outside-In TDD in Node and Typescript

A practical example on how to build REST API doing Outside-In TDD in Node, Typescript and Jest (express and mongodb)

Ratings: 4.41 / 5.00




Description

In this course we will implement a REST API in Node with express and typescript. We will store data in a mongodb database using mongoose. In order to implement this REST API, we will receive an OpenAPI Specification (OAS) file that will be the base to design and build our application.

The API we are going to build is a clone of the One Time Secret site. We will create an application that stores our secrets and provides us a URL to access them later, but with the condition that we can access that URL one time only. Whenever we attempt to retrieve the same secret again, hitting the same URL for a second time, we will receive an error.


Given that we already know how the public interface would look like with the OpenAPI Specification file provided, we will be using Test Driven Development (TDD) but following an Outside-In approach, also known as mockist approach or London School TDD. We will start writing the acceptance criteria tests, keeping them in red, we will start the double cycle and write unit tests for the inner components. That way we will build our way inside the application, one level at a time until we can make the acceptance test completely pass. While coding, even though we already have a quite clear direction of our application design, we will try to get inspired with DDD, Hexagonal Architecture and CQRS.


Kudos to @Panos for the constructive feedback that helped to make this course better.

What You Will Learn!

  • Build REST API in Node and TypeScript
  • Test with Jest framework
  • Outside-in TDD approach a.k.a. mockist a.k.a. London school TDD
  • Test doubles, mocks, spies, stubs, fakes and dummies
  • Docker
  • Mongo MongoDB Mongoose
  • Node and Express

Who Should Attend!

  • Developers with certain experience writing code
  • Developers with certain experience writing tests
  • Developers with certain experience practicing TDD