Back to all solutions

#2704 - To Be Or Not To Be

Problem Description

Write a function expect that helps developers test their code. It should take in any value val and return an object with the following two functions.

  • toBe(val) accepts another value and returns true if the two values === each other. If they are not equal, it should throw an error "Not Equal".
  • notToBe(val) accepts another value and returns true if the two values !== each other. If they are equal, it should throw an error "Equal".

Solution

/**
 * @param {string} val
 * @return {Object}
 */
var expect = function(val) {
  const compareHelper = (error, fn) => {
    if (fn()) throw new Error(error);
    return true;
  };
  return {
    toBe: input => compareHelper('Not Equal', () => input !== val),
    notToBe: input => compareHelper('Equal', () => input === val),
  };
};