How to test void javascript function (a function that does not return anything) using jest framework? Can you please provide an example for the same?
/** * this function is used to toggle the input type password field * @param element {DOMElement} - field to be toggled */
export const togglePassword = (element) => { const type = element.getAttribute('type'); if (type === 'text') { element.setAttribute('type', 'password'); } else { element.setAttribute('type', 'text'); }
}How can we test such type of functions?
31 Answer
The best way to test a void function is by mocking the behavior of its dependencies.
// module being tested
import sideEffect from 'some-module';
export default function () { sideEffect();
}Using file mocking and function expectations, you can assert that the function called the other module as expected:
import hasSideEffect from './hasSideEffect';
import sideEffect from 'some-module';
jest.mock('some-module');
test('calls sideEffect', () => { hasSideEffect(); expect(sideEffect).toHaveBeenCalledTimes(1); expect(sideEffect).toHaveBeenCalledWith();
});