Quiero probar una función. Esta función también necesita otra función, pero esta otra función se burlará con broma.
Aquí está mi función
translate(args, cb) { const transid = args.transid; const language = args.language; const defaultValue = args.defaultValue || ''; if (transid === null || transid === '') { return cb(new Error('Error. Need TransiD')); } if (language === null || language === '') { return cb(new Error('Error. Need language')); } return this.translation(transid, language, defaultValue) .then((res) => { return cb(null, res); }); }Esa función necesita la función 'traducción'. en el proceso de prueba, me burlaré.
Aquí está mi función para probar
describe('Translator', () => { describe('translate', () => { it('Should return translated value', (done) => { const args = { transid: 1, language: 'EN', defaultValue: 'defaultValue', } const cb = jest.fn((err, res) => { }); translator.translation = jest.fn((transid, language, defaultValue) => { // done(); }) translator.translate(args, cb); done(); }); }) })Todavía estoy confundido sobre cómo probar esa función usando Jest y también burlándome de las dependencias requeridas.
Un par de cosas que puedo ver:
done de Jest devolviendo la cadena Promise, que Jest usará para determinar cuándo se completa una prueba.Así es como podría verse la prueba:
describe('Translator', () => { describe('translate', () => { it('Should return translated value', () => { const args = { transid: 1, language: 'EN', defaultValue: 'defaultValue', } const cb = jest.fn(); const res = {}; translator.translation = jest.fn() .mockReturnValue(Promise.resolve(res)); return translator.translate(args, cb) .then(() => { expect(translator.translation).toHaveBeenCalledTimes(1); expect(translator.translation) .toHaveBeenCalledWith(1, 'EN', 'defaultValue'); expect(cb).toHaveBeenCalledTimes(1); expect(cb).toHaveBeenCalledWith(null, res); }); }); }) })