vendredi 7 février 2020

Mocking in jest and express

I have some code in an Express route which talks to AWS Cognito and am having trouble working out how to mock it in tests.

cognitoExpress.validate(accessTokenFromClient, (err, response) => {
    if (err) return res.status(401).json({ error: err });

    res.json({ data: `Hello ${response.username}!` });
  });

Then in my test I want to say cognitoExpress.validate should be called once and return {username: 'test user'} so that it doesnt hit the network and doesnt actually call AWS Cognito

it('It should returns 200 with a valid token', async done => {
    const { cognitoExpress } = require('../helpers/cognitoExpress');

    // I have tried
    jest.mock('../helpers/cognitoExpress');
    // and this
    jest.mock('../helpers/cognitoExpress', () => ({
      validate: jest.fn()
    }));

    const token = 'sfsfdsfsdfsd';
    const response = await request.get('/').set('Authorization', token);
    expect(cognitoExpress.validate).toHaveBeenCalledWith(token);
    expect(response.body).toEqual({ data: 'Hello test user' });
    done();
  });

Thanks in advance....

Aucun commentaire:

Enregistrer un commentaire