
This course is a complete, practical, and in-depth guide to testing modern Angular applications built with signals. It comes with a running GitHub repo.
This Course In a Nutshell
Testing is one of the most important skills for any Angular developer — and also one of the most misunderstood.
With signals changing the way we write Angular applications, it’s crucial to understand how to test signal-based components and services correctly, without relying on outdated mental models.
This course takes you step by step through everything you need to know to test Angular applications with confidence: from your very first Hello World test, all the way to more advanced topics like HTTP testing, routing, component harnesses, and code coverage.
Tests are the type of code that is way too easy to overengineer. It's very easy to accidentally write tests that are not very useful in the long term, or that are way too brittle and give you a ton of false positives.
The goal here is not just to learn how to write tests — you will understand what type of tests to write and why depending on the situation, and also how to properly debug tests when things go wrong.
Course Overview
The way that the course is structured is simple - we are going to give you a small application with no tests at all. And then we are going to fully test the application from scratch, together.
We will be using a modern Angular application, which will be fully zoneless and signal-based.
We start by setting up the development and testing environment from scratch, making sure everything is configured correctly and ready for productive testing.
Then we move on to testing components, beginning with a simple Hello World example and progressively introducing core testing concepts such as fixtures, DebugElement, DOM access, and change detection.
You will learn how to wait for Angular to update the view during tests, how to deal with async behavior, and how to write test assertions in a maintainable way.
From there, we explore how to debug failing tests effectively, including running tests in debug mode.
We will test a wide variety of components, including forms, reusable visual components, and larger screens.
After mastering component testing, we move on to testing services, including testing HTTP calls in isolation and asserting requests and responses in a clean, predictable way.
You will also learn how to test attribute directives, pipes, and routing.
Finally, we cover code coverage, component harnesses, and running tests in a browser environment, giving you a complete picture of Angular testing from end to end.
Table of Contents
This course covers the following topics:
Setting up the Angular testing environment
Testing Components
Hello World component test
Using Test Fixtures
DebugElement vs native DOM elements
Accessing and asserting DOM output
Displaying and testing custom messages
Understanding fixture.detectChanges()
Async testing with await fixture.whenStable()
Debugging Angular tests.
Skipping tests, or running only a few tests
Testing Angular components
Testing Angular Services
Testing Angular components
Testing Angular Directives
Testing Angular Pipes
Angular Http Testing
Testing Angular Routing
Angular Testing Harnesses
Code Coverage
Running Tests in a Browser
What Will You Learn In This Course?
By the end of this course, you will know exactly how to test Angular applications built with signals, using modern testing practices and tools.
You will understand how Angular’s testing utilities work, how change detection and async behavior affect your tests, and how to write tests that are robust, readable, and maintainable.
You will be able to confidently test components, services, directives, pipes, routing, HTTP logic, and UI interactions — but you will also know how to debug tests quickly when things break down.
This course will give you the skills and mental models you need to test Angular applications professionally, from small features to large, production-grade systems.
Have a look at the free lessons below, and please enjoy the course!