Home > database >  jest how can test axios?
jest how can test axios?

Time:09-17

No matter how I write, asynchronous problems occur.

test.js:

const auth = require('../methods/auth.js');

describe('test', () => {
    test('test', async () => {
      expect.assertions(1);
      const data = await auth.signin();
      return expect(data.success).toBeTruthy();
    });

auth.js:

module.exports = {
  async signin(data) {
    try {
      const res = await axios.post('/signin', data);
      return res.data;
    } catch (error) {
      return error.response;
    }
  },
}

Each execution result is different.

CodePudding user response:

You can test Promises as follows:

test('test awaiting it to resolve', () => {
   // Don't await. Note the return; test callback doesn't need to be async
   // What I do in my tests as its more readable and the intention is clear
   return expect(auth.signin()).resolves.toEqual({success: true});
});

test('test the promises way', () => {
   // Not better than above; traditional way; note 'return'
   return auth.signin().then(data => { expect(data.success).toBeTruthy() });
});
    

Detailed notes from jest: https://jestjs.io/docs/asynchronous#promises

  • Related