17.5.2019 : Updated version of this article.
We are using Angular to build complex business application since the early version of AngularJS. While we love the framework and its rich ecosystem, we always struggled with the painful testing experience based on Jasmine and Karma. Our main pain points were the performance and the missing functionality to rerun only changed tests. With Jest, a testing platform from Facebook, these two points are solved in an elegant way and in addition it offers even more benefits.
This article shows how to configure your Angular application to integrate Jest. The article assumes that you are using an Angular CLI v7.3.x generated project from Angular v7.2.x. But it works too on earlier version of Angular projects.
Angular CLI is great for scaffolding components, services, pipes and so on. But often you find yourself changing a lot of stuff after scaffolding because of company coding conventions, best practices or simply because of your preferences.
Wouldn't it be great if you could scaffold components with Angular CLI using your custom templates?
Whilst Angular 2 does have a form of two-way data binding, it does not prescribe a data flow architecture. One of it's selling features is being pattern agnostic and that it will work with an MVC or a Flux architecture. Therefore it's up to as developers to choose an appropriate pattern.
Angular2 has RxJS baked in (however it does not that mandate Observables should be used throughout the entire application), and so my first attempt and managing data flow will be based on RxJS. An MVI architecture therefore seems to be a natural fit.