Start here. This is the direct spoken answer to practice first.
Overview
A useful component test proves what a consumer or user can observe, not how the component happens to implement it.
I test the component through its public inputs, rendered output, user interactions, and emitted events. I use TestBed when Angular rendering, dependency injection, or change detection is part of the behavior. I avoid asserting private fields or calling private methods because those tests can pass while the user-facing behavior is broken.