# 🤝 Promise

1 min read, 112 words promiserejectresolve
  • A way to deal with asynchronous events
  • A Promise Object can either succeees and return resolve or will fail and return reject
  • Replaces functions accpeting successCallback and FailureCallback

javascript promises



# 📋 Unit Test Report

jest unittest report with code coverage

# 📝 How to write a Promise ?

function fetchData(status = true) {
  const res = 'hello'
  const rej = 'some error'
  return new Promise((resolve, reject) => {
    if (status) {
      resolve(res);
    } else {
      reject(rej)
    }
  })
}

module.exports = fetchData

# 🏭 How to test Promises?

import fetchData from './promises';

const expected = {
  resolve: 'hello',
  reject: 'error'
}

// #region snippet
describe('Promise test suite', () => {
  test('callback syntax if promise::resolve', () => {
    return fetchData().then(data => {
      expect(data).toBe(expected.resolve);
    });
  });
  test('callback syntax if promise::rejected', () => {
    expect.assertions(1);
    return fetchData(false).catch(e => {
      expect(e).toMatch(expected.reject);
    })
  });
  test('resolves/rejects syntax if promise::resolve', () => {
    return expect(fetchData())
      .resolves.toBe(expected.resolve);
  });
  test('resolves/rejects syntax if promise::rejected', () => {
    return expect(fetchData(false))
      .rejects.toMatch(expected.reject);
  });
  test('async/await syntax if promise::resolve', async () => {
    const data = await fetchData();
    expect(data).toBe(expected.resolve);
  });
  test('async/await syntax if promise::rejected', async () => {
    expect.assertions(1);
    try {
      await fetchData(false);
    } catch (e) {
      expect(e).toMatch(expected.reject);
    }
  });
})

// #region snippet


/** NOTE
 * 
 * In JavaScript, there are six falsy values:
 * false, 0, '', null, undefined, and NaN.
 * Everything else is truthy.
 *
 * when testing asynchronous code
 * assertion ensures callbacks are called
 * our code has 1 callback
 *
 * toMatch is Substring match, is case sensitive
 */

Subscribe to our Newsletter

If you like my work and think it was helpful kindly support my work


Buy Me A Coffee