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 v6.0.x generated project from Angular v6.0.x. But it works too on earlier version of Angular projects.
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.