I have a handy set of apiHelpers. One of the functions is a wrapper around axios's get method called getWrapper
const getWrapper = url => (endpoint, headers = {}) => {
return axios.get(`${url}${endpoint}`, { headers: { ...getHeaders(), ...headers } });
};
For unauthenticated calls, I have a getUnauthenticatedApiHelper
function that calls getWrapper
. getWrapper
does a few things, one of which is concatenating the supplied endpoint to BASE_URL
which is an env variable.
export const getUnauthenticatedApiHelper = (endpoint, headers) => getWrapper(BASE_URL)(endpoint, headers);
My test calls getUnauthenticatedApiHelper and expects that it then calls getWrapper.
describe('apihelpers', () => {
test('getUnauth', () => {
const getWrapper = jest.fn();
var wtf = getUnauthenticatedHelper('end/point/');
console.log(wtf);
expect(getWrapper).toHaveBeenCalled();
});
});
When I log out the result, I can see that the endpoint has correctly been concatenated with BASE_URL
, however, my test fails with the error Expected mock function to have been called, but it was not called.
Whether or not this is a valid thing to be testing or not is beside the point atm because I'm just trying to get my head around how to effectively use jest. I have been experimenting with this in an online repl - and no matter what I do, I keep running into the problem of getWrapper
not being called which makes me believe that there’s something fundamental I'm misunderstanding about jest.fn() - so what am I missing and how should I be testing that getWrapper
is called?
Here is an online repl of what I've been experimenting with