I have an authorizer#getToken method that returns a token. The first time it gets called, it authenticates by posting to an API; each call thereafter returns the token that was received from the API call. I need to test that the private method that hits the API does not get called (via #authenticate) when a token already exists. #sessionIsValid is the function that checks for an existing token. Here's my test:
it('does not authenticate', async () => {
authorizer['sessionIsValid'] = jest.fn(() => true);
await authorizer.getToken();
expect(authorizer['authenticate']).not.toHaveBeenCalled();
});
Jest is complaining with
Matcher error: received value must be a mock or spy function
I've tried jest.spyOn(authorizer, 'authenticate') but get Argument of type '"authenticate"' is not assignable to parameter of type '"getToken"'.
I can't quite connect the dots here. Any thoughts on how to accomplish this?