Jest: рд╕реНрдереИрддрд┐рдХ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛ рд░рд╣рд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдЬреБрд▓ре░ 2016  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/jest

рдореИрдВ рдЬреЗрд╕реНрдЯ рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдкрджреНрдзрддрд┐ рдХрд╛ рдордЬрд╛рдХ рдЙрдбрд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдХреНрдпрд╛ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдорд░реНрдерд┐рдд рд╣реИ?

http://stackoverflow.com/questions/38206478/mocking-methods-in-jest рдкрд░ рдХреНрд░реЙрд╕-рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд╣реИ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

import ApiWrapper from '../../services/api_wrapper';
jest.unmock('../helper')

describe('Helper', () => {
    let Helper;

    beforeEach(() => {
        Helper = require('../helper').default;
    });

    it('calls the Api Wrapper', () => {
        Helper.help()

        expect(ApiWrapper.help).toHaveBeenCalled();
    });

});

рдЬрд╣рд╛рдВ рд╣реЗрд▓реНрдкрд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

import ApiWrapper from '../services/api_wrapper'
class Helper {
    help() {
        ApiWrapper.help()
    }
}

export default new Helper();

рдФрд░ рдПрдкреАрд╡рд╛рдкрд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

class ApiWrapper {
  static help () {
     console.log('help!')
  }
}
export default ApiWrapper;

ApiWrapper.help() рдЬреЗрд╕реНрдЯ рджреНрд╡рд╛рд░рд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП 'рд╕рд╣рд╛рдпрддрд╛!' рдХрднреА рдореБрджреНрд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛, рдлрд┐рд░ рднреА рдкрд░реАрдХреНрд╖рд╛ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд╛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдпрд╣ рдЕрднреА рднреА рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ рдЕрдЧрд░ рд╣рдо ApiWrapper рдХреЛ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд╛рджреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ:

export default {
    help: () => { console.log('help!'); }
}

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдХрд▓реНрдкрдирд╛ рдореЗрдВ рдЖрдпрд╛рдд рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ (рдЗрд╕рд▓рд┐рдП ApiWrapper рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдФрд░ ApiWrapper рдХреЛ рд╕рд┐рдВрдЧрд▓рдЯрди рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ, рдЬреИрд╕реЗ:

class ApiWrapper {
   help() {
      console.log('help!');
   }
}();

export default new ApiWrapper();

рдЬреЗрд╕реНрдЯ рдХреЗ рдордЬрд╛рдХрд┐рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдРрд╕рд╛ рдХреНрдпрд╛ рд╣реИ рдЬреЛ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЬреЗрд╕реНрдЯ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдкрд░ рдореЙрдбреНрдпреВрд▓ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ it рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рд╢реАрд░реНрд╖ рдкрд░ ApiWrapper рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗ рдкрд╣рд▓реЗ Helper рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣реЗрд▓реНрдкрд░ рдХреЛ ApiWrapper рдПрдХ рдЕрд▓рдЧ рдкреНрд░рддрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • рд╢реАрд░реНрд╖ рдкрд░ рджреЛрдиреЛрдВ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдВред
  • beforeEach рдореЗрдВ рджреЛрдиреЛрдВ рд╡рд░реНрдЧреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рд╕рд░рд▓реАрдХреГрдд рд╡реНрдпрд╛рдЦреНрдпрд╛:

var A = require('A');
jest.resetModuleRegistry();
A !== require('A'); // true, A is not the exact same module as before we reset the registry.

рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╕рд╣реА рдЕрднрд┐рдХрдерди toBeCalled рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдЖрдк рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореЗрд░рд╛ рдпрд╣реА рдорддрд▓рдм рдерд╛ред рдореИрдВрдиреЗ рд╕реАрдзреЗ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ред

рдЬреЗрд╕реНрдЯ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдкрд░ рдореЙрдбреНрдпреВрд▓ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ it рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рд╢реАрд░реНрд╖ рдкрд░ ApiWrapper рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗ рдкрд╣рд▓реЗ Helper рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣реЗрд▓реНрдкрд░ рдХреЛ ApiWrapper рдПрдХ рдЕрд▓рдЧ рдкреНрд░рддрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • рд╢реАрд░реНрд╖ рдкрд░ рджреЛрдиреЛрдВ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдВред
  • beforeEach рдореЗрдВ рджреЛрдиреЛрдВ рд╡рд░реНрдЧреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рд╕рд░рд▓реАрдХреГрдд рд╡реНрдпрд╛рдЦреНрдпрд╛:

var A = require('A');
jest.resetModuleRegistry();
A !== require('A'); // true, A is not the exact same module as before we reset the registry.

рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

kentor picture kentor  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

emmby picture emmby  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

withinboredom picture withinboredom  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mmcgahan picture mmcgahan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kgowru picture kgowru  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ