рдореИрдВ рдЬреЗрд╕реНрдЯ рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдкрджреНрдзрддрд┐ рдХрд╛ рдордЬрд╛рдХ рдЙрдбрд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдХреНрдпрд╛ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдорд░реНрдерд┐рдд рд╣реИ?
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();
рдЬреЗрд╕реНрдЯ рдХреЗ рдордЬрд╛рдХрд┐рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдРрд╕рд╛ рдХреНрдпрд╛ рд╣реИ рдЬреЛ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ?
рд╕рд╣реА рдЕрднрд┐рдХрдерди 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.
рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЬреЗрд╕реНрдЯ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдкрд░ рдореЙрдбреНрдпреВрд▓ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ
it
рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рд╢реАрд░реНрд╖ рдкрд░ApiWrapper
рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗ рдкрд╣рд▓реЗHelper
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣реЗрд▓реНрдкрд░ рдХреЛApiWrapper
рдПрдХ рдЕрд▓рдЧ рдкреНрд░рддрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:beforeEach
рдореЗрдВ рджреЛрдиреЛрдВ рд╡рд░реНрдЧреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИрд╕рд░рд▓реАрдХреГрдд рд╡реНрдпрд╛рдЦреНрдпрд╛:
рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред