Unit Testing AngularJS: Build Bugfree Apps That Always Work!

Learn how to use Karma, Jasmine and Istanbul to quickly set up automated unit tests for your AngularJS applications
4.4 (158 ratings)
Instead of using a simple lifetime average, Udemy calculates a
course's star rating by considering a number of different factors
such as the number of ratings, the age of ratings, and the
likelihood of fraudulent ratings.
1,790 students enrolled
40% off
Take This Course
  • Lectures 23
  • Length 2.5 hours
  • Skill Level All Levels
  • Languages English
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion
Wishlisted Wishlist

How taking a course works


Find online courses made by experts from around the world.


Take your courses with you and learn anywhere, anytime.


Learn and practice real-world skills and achieve your goals.

About This Course

Published 1/2016 English

Course Description

With over 1600 students and 100+ positive reviews this course is Udemy's most popular course covering Unit Testing for AngularJS!

Read on to learn why testing your Angular code can help you build stronger apps that always work when you need them to.

When I first started using Angular for our projects, I fell in love with just how easy it was to create apps which looked and worked great.

But as the apps we developed became more complex, and the number of people working on the same codebase grew, it became more and more difficult to keep track of all the changes happening in the code and what it’s actually meant to be doing, which lead to a lot of bugs and headaches.

Re-writing or fixing broken code is not only frustratingly boring, it’s also a massive waste of time and money.

So I’d like to help you out, by showing you how learning about testing AngularJS apps will save you from falling into the same situation.

Hi, I’m Matt and in this course I’ll walk you through how to Unit Test AngularJS code so that your app will never again break unexpectedly.

After completing this course you’ll be able to implement unit tests in your own Angular app, so that you can spend less time on fixing bugs and just focus on the fun parts of development!

Whether you're a developer or a quality insurance engineer, you'll learn skills in this course which apply to any AngularJS environment.

You’ll learn about:

  • Testing concepts, tools and why you should test
  • Implementing code coverage in Angular using Istanbul and analysing the results to identify weak points in our tests and in our code
  • How to setup Karma and Jasmine from scratch
  • Tracking function calls and events using spies
  • How to test custom controllers, filters and services
  • How to mock dependencies using $provide and spies
  • Keeping code DRY using Jasmine’s beforeEach() and afteEach() functions
  • Testing custom directives’ JS code and the HTML template
  • How to test for backend AJAX calls, timeouts and promises
  • Debugging Karma to easily solve any problems with your unit tests

If you’re not convinced about enrolling in the Unit Testing AngularJS course and learning about using Karma and Jasmine testing in Angular, take a look at the free preview videos and let me show you how to make your code rock solid so that it stands the test of time!

What are the requirements?

  • This course is for Angular 1.X
  • You should already be familiar with how to write a basic AngularJS App.

What am I going to get from this course?

  • Build great AngularJS 1.X applications that will never fail unexpectedly
  • Gain the required skills to use the most popular AngularJS testing tools, including Karma, Jasmine and Istanbul
  • Spend more time creating amazing new features instead of fixing bugs
  • Use Test Coverage to analyse and identify weak points in the code base
  • Create and debug automated Unit tests that make sure every line of code does its job

Who is the target audience?

  • This course is for developers and QA engineers who would like to learn how to write automated tests for their AngularJS apps in order to spend less time fixing bugs.
  • This course is NOT for developers who have never created an AngularJS app and want to learn about AngularJS in general

What you get with this course?

Not for you? No problem.
30 day money back guarantee.

Forever yours.
Lifetime access.

Learn on the go.
Desktop, iOS and Android.

Get rewarded.
Certificate of completion.


Section 1: Intro

Welcome message from your instructor!


In this lesson we'll go over the agenda for the rest of the course

Section 2: Testing Overview

In this lesson we'll cover the reasons why we should always test our code


In this lesson we'll cover some of the main testing methods in use today


In this lesson we'll cover the methods and tools available for testing in Angular


In this lesson we'll setup the foundation of our app which we build on for the rest of this course

Section 3: Testing in Angular

In this lesson we'll add Karma and Jasmine to our app to allow us to start implementing tests

In this lesson we'll implement our first unit test
In this lesson we'll explore using beforeEach and afterEach to keep our code DRY
In this lesson we'll explore writing the basic tests at the core of our testing suite

Continuation of previous lesson


In this lesson we'll call a third party API and learn how to test backend calls using $httpBackend

In this lesson we'll cover how to test timeouts and promises

In this lesson we'll create a custom filter and learn how to test it


In this lesson we'll create a custom directive and set up our test to allow us to test it easily


In this lesson we'll cover how to test both the directive's javascript code and its HTML template

In this lesson we'll cover how to debug Karma to identify any problems with our tests
Section 4: Test Coverage
What is Test Coverage?
Adding Coverage to our App
Improving Coverage
Section 5: Bonus

Learn how to mock a service or any other dependency using Angular Mocks' $provide function.

Learn how to use spies to monitor and track calls to functions and events. You'll also learn how to use spies to mock specific functions as an alternative to using $provide.
Section 6: The End
What's Next?

Students Who Viewed This Course Also Viewed

  • Loading
  • Loading
  • Loading

Instructor Biography

Matthias Kentzia, Web Developer

Hi, I'm Matt.

I'm a software developer who loves to use the latest technologies to create amazing applications that help people – but I'm also super into entrepreneurship and continuos self-improvement.

I live on the sunny island of Malta in the middle of the Mediterranean. Life's not too bad really, but I'm always looking for ways to make it better by learning how to be better.

For all the topics covered by my courses, I was in exactly the same position as you are right now. I wasn't an expert, I was a beginner. I read books, followed blogs and completed courses to learn new things and become better at what I do. By making myself better I became an expert.

And now I'd like to share all the knowledge that I've gained with you - with all the mistakes, head-scratching and "aha!" moments still fresh in my mind. I'm determined to make all my courses useful, memorable, easy to follow and fun - most importantly, I want my courses to help you become better.

Ready to start learning?
Take This Course