How to Cast an Injected Service as a Mock in Angular Unit Tests

I've been meaning to write this for a while. Normally in my Angular unit tests, I set up my service mocks and then let dependency injection treat them as if they're the real thing. But sometimes you'll need to cast a service mock as a spy so you can do things like reset the calls it's made. And it's one of those things I always have to think back and remember "How did I do that last time?".

Here's an example of how:

const mockScoreAdminService = TestBed.inject(ScoreAdminService) as jasmine.SpyObj<ScoreAdminService>;

mockScoreAdminService.processScores.calls.reset();

This code casts the service mock, which is treated as the real service type, to a Jasmine spy object. It then resets the calls made to the processScores method to zero.

I hope this helps someone!

Comments

Popular Posts

How to Get Norton Security Suite Firewall to Allow Remote Desktop Connections in Windows

Resolving the "n timer(s) still in the queue" Error In Angular Unit Tests

How to Determine if a Column Exists in a DataReader

Video Game Review: Your Shape Fitness Evolved for Xbox 360 Kinect

Silent Renew and the "login_required" Error When Using oidc-client