How to test Angular component that uses Chart.js
Wrap the chart constructor in a function and provide that via an
InjectionToken(or a service).
The working code is over at StackBlitz.
What’s the issue?
When using chart.js we need to instantiate a
Chart instance like this
this.chart = new Chart(ctx, options).
Ok that works, but what test can we write against that?
We can check if the
chart constant is actually populated and of the type
Chart. That’s pretty much it. But if we had some functionality tied to it, like do something interesting when user clicks on a point from the chart, there’s not a lot we can actually test as it stands:
- We can’t verify that the
options are what we expect them to be.
- We can’t verify that callbacks on chart events behave as we’d like them to.
The detailed article :
It walks through the solution 🪜step by step and provides a couple of bonuses. ⚠️Warning It’s behind a paywall.️ ⚠️