Jest: рд╕реНрдкрд╛рдИрдСрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛

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

рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЬреЗрд╕реНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреИрд╕реЗ рдЕрдкрдирд╛рдпрд╛ рдЬрд╛рдПред

рдореИрдВ рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдордЬрд╛рдХ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛, рдмрд╕ рдЙрд╕ рдкрд░ рдЬрд╛рд╕реВрд╕реА рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реВрдВред рдЖрдЗрдП рдХрд╣реЗрдВ рдХрд┐ рдореИрдВ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдкрд░ рдХрд┐рддрдиреА рдмрд╛рд░ рдХреНрд╡реЗрд░реА рдХреЙрд▓ рдХреА рдЧрдИ рдереАред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

const querySpy = pg.Client.prototype.query = jest.fn(pg.Client.prototype.query);
expect(querySpy.mock.calls.length).toBe(2)

рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдВрдд рдореЗрдВ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднреА рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдпрд╣ рдЙрд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджреВрд╕рд░реЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рди рдХрд░реЗред рддреЛ рдЕрдЧрд░ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдлрд╛рдИ рдХреЛ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдкрд░реАрдХреНрд╖рдг рдЕрд▓рдЧрд╛рд╡ рдХреЛ рддреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рдХрд┐ рдЪрдореЗрд▓реА рдореЗрдВ рдЬрд╛рд╕реВрд╕реА рд╣реЛрддреА рд╣реИ рдЬреЛ рдХрд┐ рдордЬрд╛рдХ рдореЗрдВ рднреА рдХрд╛рдо рдХрд░рддреА рд╣реИ (рд▓реЗрдХрд┐рди рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ), рдЬреЛ рдХрд┐ рдмрд╣реБрдд рд╣реА рд╕реБрдВрджрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:

const querySpy = spyOn(pg.Client.prototype, 'query').and.callThrough();
expect(querySpy.calls.count()).toEqual(3);

рдФрд░ рдЬреИрд╕реНрдореАрди рдЯреЗрд╕реНрдЯ рдХреЗ рдмрд╛рдж рд╕реНрдкрд╛рдИ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рд╣рдЯрд╛рдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддреА рд╣реИ, рдЬреЛ рдХрдорд╛рд▓ рд╣реИред

рд▓реЗрдХрд┐рди рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдордЬрд╛рдХ рдХрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЬрд╛рдПрдЧрд╛? рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬреИрд╕реНрдореАрди рдЬрд╛рд╕реВрд╕реЛрдВ рдХрд╛ рдордЬрд╝рд╛рдХ рдореЗрдВ рдордЬрд╝рд╛рдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдирдХрд▓реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ spyOn рдпрд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╕реВрд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ред

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

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд▓рдд рд╣реЛ, рд▓реЗрдХрд┐рди expect.spyOn рдЬреИрд╕реНрдореАрди spyOn рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдВрдд рдореЗрдВ рджрд╛рд╡рд╛ рдХрд┐рдП рдЧрдП 'рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛' рдХреЛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛рдлреА рд╕рд╛рдл-рд╕реБрдерд░реА рд╣реИ рдФрд░ рдХрд▓реНрдкрдирд╛ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рддреА рд╣реИред рдХреНрдпрд╛ #1679 рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реЛрдЧреА?

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

рдЗрд╕реЗ #1679 рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд▓рдд рд╣реЛ, рд▓реЗрдХрд┐рди expect.spyOn рдЬреИрд╕реНрдореАрди spyOn рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдВрдд рдореЗрдВ рджрд╛рд╡рд╛ рдХрд┐рдП рдЧрдП 'рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛' рдХреЛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛рдлреА рд╕рд╛рдл-рд╕реБрдерд░реА рд╣реИ рдФрд░ рдХрд▓реНрдкрдирд╛ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рддреА рд╣реИред рдХреНрдпрд╛ #1679 рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реЛрдЧреА?

#2534 рднреА рджреЗрдЦреЗрдВред

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

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

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

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

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

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

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