Test Driven Development with Jest Test Driven Development

Learning objective: By the end of this lesson, students will be able to evaluate when and how to apply Test Driven Development (TDD) principles to create more reliable, maintainable code.

Test Driven Development

When building software, it’s easy to run into tricky edge cases that lead to bugs. Adding new features or updating existing ones can introduce unexpected problems—even accidentally breaking old, reliable parts of your code. To handle this, we write tests to confirm that our application works as intended before it ships off to production.

Let’s be honest: writing tests might not feel like the most exciting part of development. It can seem like an extra chore—after all, you could just open the app, click around, and see if everything looks okay.

But think about this scenario:

Imagine you’ve built an app with hundreds of features and thousands of possible user journeys. Could you confidently say it’s bug-free just because you personally tried a few paths? What if your first user approaches the app in a completely different way—clicking buttons in a sequence you never thought about—and suddenly something breaks? You fix that bug, and while you’re at it, add a new feature. Someone tries that new feature, and now a totally different part of the app fails. Without proper tests, you’d have to retest everything, over and over, every time you make a change.

While writing tests can feel time-consuming upfront, it ultimately saves time and frustration in the long run. With a solid test suite, you can instantly check if everything still works as expected, without having to manually hunt down obscure bugs.


TDD Cycle


TDD

TDD stands for Test Driven Development. The idea is to write your tests before you write any of the corresponding application code. This might sound backwards at first, but here’s why it works:

In a TDD workflow, you begin with a set of tests that all fail because no code exists yet. Your job is to write just enough code to make those tests pass. Over time, this approach guides you to cleaner, more maintainable code and helps you avoid nasty surprises in production.