рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреЗ рд╕рд╛рде jest
рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рдЬрдм рдореИрдВ рдкреИрдХреЗрдЬ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХреЛрдИ рд╕реНрдерд╛рдиреАрдп рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд░реБрдВ?
SecurityError: localStorage is not available for opaque origins
at Window.get localStorage [as localStorage] (node_modules/jsdom/lib/jsdom/browser/Window.js:257:15)
at Array.forEach (<anonymous>)
рдиреАрдЪреЗ рджреА рдЧрдИ рдЪрд░реНрдЪрд╛ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢:
рдЗрд╕ рд╕рд╡рд╛рд▓ рдкрд░ рдиреАрдЪреЗ рджреА рдЧрдИ рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрд╢рди рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ "рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ" рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдЧрд┐рдЯрд╣рдм рдХреА "рдЕрдзрд┐рдХ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рджреЗрдЦреЗрдВ" рд╕реБрд╡рд┐рдзрд╛ рджреНрд╡рд╛рд░рд╛ рдЫреБрдкрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИред рдирдИ рд╡реЗрдм рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП jsdom рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИ; рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред
рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЗ рд▓рд┐рдП, рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рд╡реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рднрд▓реЗ рд╣реА рдРрд╕реЗ рдЖрд╢реНрд░рд┐рдд рдореМрдЬреВрдж рд╣реЛрдВ, jsdom рдХреЛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреА-рдЫреЛрдЯреА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдирд╣реАрдВ рдЪреВрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣рд╛рдВ рд╕реНрдерд┐рддрд┐ рдЗрддрдиреА рд╡рд┐рдХрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реА рд▓рдЧрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдХрд┐рд╕реА рдХреЛ рднреА рдЖрдкрддреНрддрд┐рдЬрдирдХ рдЬреЗрд╕реНрдЯ рдХреЛрдб рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддреЗ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ рдСрдкрд░реЗрд╢рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ jsdom рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдкрд╛рдареНрдпрдХреНрд░рдо рд╕реЗ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЬреЛ рд╡реЗрдм рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬреЛ рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдЖрдк рдореЗрдВ рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдХрдард┐рди рд╕реНрдерд┐рддрд┐ рд╣реИ, рдЖрдкрдХреА рдЦреБрдж рдХреА рдХреЛрдИ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рдмрд╛рддрдЪреАрдд рд╕реЗ рдХрд┐ рдЖрдкрдХреА рдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд░реНрднрд░рддрд╛ (рдПрдмреА) рдЖрдкрдХреА рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд░рд╣реА рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЬреЗрд╕реНрдЯ рдХреЗ рдмрдЧреНрдЧреА рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╕реНрддрд░ рдкрд░ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрдЬрд╛рдп рдПрдХ рдЖрд╢реНрд░рд┐рдд рдХреА рдмрдЧ рдХреЗ рдХрд╛рд░рдг рд╕рднреА jsdom рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдПрдХ рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗред
рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдУрдкреА рдХрд╛ рдореВрд▓ рдЙрддреНрддрд░:
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ URL рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк, рдпрд╛ рд╢рд╛рдпрдж рдЬреЗрд╕реНрдЯ, window.localStorage
ред рдЬреЗрд╕реНрдЯ рдЕрдиреБрд░рдХреНрд╖рдХ рд╕рд░реНрд╡реЛрддреНрддрдо рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕реБрдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдЬреЗрд╕реНрдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ URL рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?
рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╣рд╛рд▓рд┐рдпрд╛ рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ 11.12.0
рд╕рд╛рде рдкреЙрдк рдЕрдк рд╣реБрдЖ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред jest
рд╕рд╛рде enzyme
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдпрд╣реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВред
рд╣рд╛рдВ, рдореБрдЭреЗ 11.11.0
рд╕реЗ 11.12.0
рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рдорд╕реНрдпрд╛ рд╣реЛрдиреЗ рд▓рдЧреАред рдЬреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ testURL
рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИред
@ рдмреЗрди-рдореИрдХрд░реНрдирди рд╣рд╛рдп, рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдиреЗ рдХреНрдпрд╛ рдпреВрдЖрд░рдПрд▓ рджрд┐рдпрд╛ рд╣реИ ??
@gokulkrishh рдореИрдВрдиреЗ рдЗрд╕реЗ http://localhost/
рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдорд╛рдиреНрдп рдпреВрдЖрд░рдПрд▓ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рдПрдВрдЬрд╛рдЗрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдВрдЬрд╛рдЗрдо рд╡рд╣ рдХрд╛рдо рдХрд░рддрд╛
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдЯреВрдЯ рдЧрдпрд╛ :(
@ рдмреЗрди-рдореИрдХрд░реНрдирди рдзрдиреНрдпрд╡рд╛рдж
рдЗрд╕рдХрд╛ рдЕрдиреБрднрд╡ рднреА рдХрд░ рд░рд╣реЗ рд╣реИрдВред
("+1" рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╕реНрдкреИрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛; рд╕рдорд╕реНрдпрд╛ рдереНрд░реЗрдб рдореЗрдВ рд╕рднреА рдХреЛ рдИрдореЗрд▓ рдХрд░рдирд╛ рд╕рд╣рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред)
рдХреНрд╖рдорд╛ рдпрд╛рдЪрдирд╛ред рдмрд╕ рдорджрдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
testURL
рдХреЛ jestConfig рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ @ ben-mckernan рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ред
рдФрд░ рд╣рдо рдПрдВрдЬрд╛рдЗрдо рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЗ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдРрдк рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ "рдлрд╝рд╛рдЗрд▓: /" рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдХрд╛рдо рднреА рдХрд░рддрд╛ рд╣реИред
@miamollie рдореИрдВрдиреЗ @ рдмреЗрди-рдореИрдХрд░реНрдирди рд╕реБрдЭрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░ testURL
рдЬреЛрдбрд╝рд╛ (рдЬреЗрд╕реНрдЯ + рдПрдВрдЬрд╛рдЗрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдПрдВрдЬрд╛рдЗрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред jest-environment-jsdom
рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рддреНрд░реБрдЯрд┐ рдЬреЛ jsdom рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ)ред рдЙрд╕рдХреЗ рдХрд╛рд░рдг рдореЗрд░реА рдХреБрдЫ рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣реА рд╣реИрдВред рд╕рд┐рд░реНрдл рдЖрдкрдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдПред рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдореЗрд░реЗ рд╕реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (TestURL рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред
@domenic рдореИрдВ рдХреЗрд╡рд▓ рдордЬрд╛рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рддреЛ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдПрдВрдЬрд╛рдЗрдо рдореБрджреНрджрд╛ рд╣реИред
@gokulkrishh рд╣рд╛рдБ, рд╡рд╣реА, рдЗрд╕рдиреЗ
@ рдмреЗрди-рдореИрдХрд░реНрдирди рд╕рдорд╛рдзрд╛рди рдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ред рдзрдиреНрдпрд╡рд╛рдж!
@ рдмреЗрди-рдореИрдХрд░реНрдирди рдореИрдВ рдПрдХ рдХреЛрдгреАрдп рд╕реЗрдЯрдЕрдк (рдЬреЗрд╕реНрдЯ-рдкреНрд░реАрд╕реЗрдЯ-рдХреЛрдгреАрдп рдХреЗ рд╕рд╛рде), рдПрдХ рд╣реА рдмрдЧ, рдПрдХ рд╣реА рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЬреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рддреЛ рдпрд╣ рдПрдХ рдПрдВрдЬрд╛рдЗрдо рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЗрд╕реНрдЯ рдХреЛ рдЗрд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП testURL
рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ about:blank
)ред
@DcsMarcRemolt рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдбреАрдмрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред Jest
рдирд┐рд░реНрднрд░рддрд╛ рдореЙрдбреНрдпреВрд▓ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ jest-environment-jsdom
> - рдЕрдкрдиреЗ package.json рдореЗрдВ "jsdom": "^11.5.1"
рдХреИрд░реЗрдЯ (^) рдЗрд╕ NPM рдХреА рд╡рдЬрд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХреЗ рд░реВрдк рдореЗрдВ jsdom 11.12.0
(рдЬреЛ рдЖрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ)ред рддреЛ рдпрд╣ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЯреВрдЯ рдЧрдпрд╛ред рдореБрджреНрджрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдордЬрд╛рдХ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдЗрд╕рдХрд╛ рдЦрдпрд╛рд▓ рд░рдЦреЗрдВред
рдореИрдВ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рджреГрд╢реНрдпрддрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реВрдВрдЧрд╛ред рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдбреЛрдорд┐рдирд┐рдХ рд╕реЗ рдкрд╣рд▓реА рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВред
package.json рдореЗрдВ рдЬреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдЬреЛрдбрд╝рдирд╛:
"testEnvironment": "node"
рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @ blue3printchris рдХреЛ рд╢реНрд░реЗрдпред
рдореИрдВ рдЕрдм рдЗрд╕ рдЕрджреНрдпрддрди рдХреЗ рдмрд╛рдж рд╕реЗ рд╕реНрдерд╛рдиреАрдп рд╕реНрдЯреЛрд░реЗрдЬ рдкрд░ JSDOM рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдФрд░ рдирдХрд▓реА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
рдЪреВрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдерд╛, рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдиреБрдХрд╕рд╛рди рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛:
11.12.1
рдЬрд╛рд░реА рдХрд░реЗрдВред11.12.0
рдХреЛ рдЦреАрдВрдЪреЗ рдпрд╛ рд╣рдЯрд╛ рджреЗрдВред12.0.0
рдХрд░реЗрдВ рдХрд┐ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИредрдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИред рдирдИ рд╡реЗрдм рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП jsdom рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИ; рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред
рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЗ рд▓рд┐рдП, рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рд╡реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рднрд▓реЗ рд╣реА рдРрд╕реЗ рдЖрд╢реНрд░рд┐рдд рдореМрдЬреВрдж рд╣реЛрдВ, jsdom рдХреЛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреА-рдЫреЛрдЯреА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдирд╣реАрдВ рдЪреВрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣рд╛рдВ рд╕реНрдерд┐рддрд┐ рдЗрддрдиреА рд╡рд┐рдХрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реА рд▓рдЧрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдХрд┐рд╕реА рдХреЛ рднреА рдЖрдкрддреНрддрд┐рдЬрдирдХ рдЬреЗрд╕реНрдЯ рдХреЛрдб рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддреЗ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ рдСрдкрд░реЗрд╢рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ jsdom рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдкрд╛рдареНрдпрдХреНрд░рдо рд╕реЗ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЬреЛ рд╡реЗрдм рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬреЛ рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдЖрдк рдореЗрдВ рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдХрдард┐рди рд╕реНрдерд┐рддрд┐ рд╣реИ, рдЖрдкрдХреА рдЦреБрдж рдХреА рдХреЛрдИ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рдмрд╛рддрдЪреАрдд рд╕реЗ рдХрд┐ рдЖрдкрдХреА рдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд░реНрднрд░рддрд╛ (рдПрдмреА) рдЖрдкрдХреА рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд░рд╣реА рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЬреЗрд╕реНрдЯ рдХреЗ рдмрдЧреНрдЧреА рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╕реНрддрд░ рдкрд░ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрдЬрд╛рдп рдПрдХ рдЖрд╢реНрд░рд┐рдд рдХреА рдмрдЧ рдХреЗ рдХрд╛рд░рдг рд╕рднреА jsdom рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдПрдХ рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗред
рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпрджрд┐ рд╕рдорд╕реНрдпрд╛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЕрд╕рдорд░реНрдерд┐рдд рддрд░реАрдХреЗ рд╕реЗ jsdom рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╣реИ, рддреЛ рдпрд╣ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдПрдХ рд╕реЗрд╡рд░ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рд╣реИ рдФрд░ рдордЬрд╛рдХ рдХреЛ рдПрдХ рдкреИрдЪ рдЬрд╛рд░реА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЬрдм рд╕рднреА jsdom рдЧреБрдг рдЕрдзрд┐рдХ рдкрд╛рд╢рди рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдореЗрд░реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣рд▓, рдПрдХ рдХрд╛рд▓реА рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВредрдХреЛрдб
const { JSDOM } = require('jsdom');
const Node = require('jsdom/lib/jsdom/living/node-document-position');
// We can use jsdom-global at some point if maintaining these lists is a burden.
const whitelist = ['HTMLElement', 'Performance'];
const blacklist = ['sessionStorage', 'localStorage'];
function createDOM() {
const dom = new JSDOM('', { pretendToBeVisual: true });
global.window = dom.window;
global.Node = Node;
global.document = dom.window.document;
// Not yet supported: https://github.com/jsdom/jsdom/issues/317
global.document.createRange = () => ({
setStart: () => {},
setEnd: () => {},
commonAncestorContainer: {
nodeName: 'BODY',
ownerDocument: document,
},
});
global.navigator = {
userAgent: 'node.js',
};
Object.keys(dom.window)
.filter(key => !blacklist.includes(key))
.concat(whitelist)
.forEach(key => {
if (typeof global[key] === 'undefined') {
global[key] = dom.window[key];
}
});
}
module.exports = createDOM;
рдиреЛрдб рдЧреНрд▓реЛрдмрд▓ рдкрд░ jsdom рдЧреНрд▓реЛрдмрд▓реНрд╕ рди рдбрд╛рд▓реЗрдВ
рдЦреИрд░, рдореИрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдБред рдореБрдЭреЗ jsdom рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╣ рд╕рд╛рд▓реЛрдВ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рд╕реБрдЭрд╛рдП рдЧрдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реА рд╣реИред
Jsdom-global рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЦреИрд░, рдореИрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдБред рдореБрдЭреЗ jsdom рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг "рдЕрд╕рд▓реА рдмреНрд░рд╛рдЙрдЬрд╝рд░" рдХреЗ рдЕрдВрджрд░ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдЙрд╕реА рддрд░рд╣ рд╕реЗ jsdom рдореЗрдВ рднреА рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВ - рдмрд╕ рд╡рд╣реА HTML рдкреНрд░рджрд╛рди рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╡реИрд╢реНрд╡рд┐рдХ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдХреЗ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдЕрдВрддрд░ рдкреЗрд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдПрдлрд╡рд╛рдИрдЖрдИ рдореИрдВ jsdom
рд╕реЗ 11.12.0
рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬреЗрд╕реНрдЯ рдирд╣реАрдВ, рдореЛрдЪрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рд╣реВрдВред
рдирдорд╕реНрддреЗ, рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдмрджрд▓рд╛рд╡ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдХреНрдпреЛрдВ рдкреЗрд╢ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗрд╡рд▓ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЬреЛрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦрд╛ рд╣реИ, рдпрд╣ рдЙрддрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдЬрд┐рддрдирд╛:
const fib = require('./index');
test('Fib function is defined', () => {
expect(typeof fib).toEqual('function');
});
test('calculates correct fib value for 1', () => {
expect(fib(1)).toEqual(1);
});
рдФрд░ рдлрд┐рд░ рднреА рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд░рд┐рдПрдХреНрдЯ рдкрд░ Redux рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдЙрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдмрдбрд╝рд╛ рдЖрд╡реЗрджрди рдХрд┐рдпрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЕрд╕рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдмрд╕ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рд░рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ
//index.js, yes, only one line, no react no redux no enzyme
function add(a, b) {}
рд╡реИрд╕реЗ, testURL
рдФрд░ testEnvironment
"рд╣реИрдХ" рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдореЗрд░рд╛ рдкреИрдХреЗрдЬ рд╣реИредрдЬреЗрд╕рди:
"jest": {
"testURL": "http://localhost/",
"testEnvironment": "node"
},
рддреЛ рдореЗрд░рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ рдХрднреА-рдХрднреА рд╣рдо рд╕рд┐рд░реНрдл рдПрдХ рдЯреЗрд╕реНрдЯ рд░рдирд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд┐рд░реНрдл "рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ"
@ khmy2010 рдЖрдкрдХреЗ рдХреЛрдб рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдЬреЗрд╕реНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬрд┐рддрдирд╛ рд╡реЗ jsdom рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдирдХреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдмрдирд╛рдПрдВред
рдСрдк рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдФрд░ рдпрд╣рд╛рдВ рд▓рдЧрднрдЧ рд╕рднреА (рдореИрдВ рдирд╣реАрдВ рд╣реВрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░)
рдПрдВрдЬрд╛рдЗрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛)ред рдпрджрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ рддреЛ рдореБрдЭреЗ рдордЬрд╛рдХ рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЦреЗрдж
рд╡рд╣ред
30 рдЬреБрд▓рд╛рдИ 2018 21:32 рдХреЛ, "рдЬрд╝рд┐рд░реЛ" рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
@khmy2010 https://github.com/khmy2010 рдЖрдкрдХреЗ рдХреЛрдб рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
рдЬреЗрд╕реНрдЯ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рд╡реЗ jsdom рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЙрдирдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рдмрдирд╛рдПрдВ
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА https://github.com/facebook/jest ред
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/jsdom/jsdom/issues/2304#issuecomment-408864079 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/AVrB3uOLy7l4JKbStKWPtGi0oHfAaQbYks5uLwrpgaJpZM4Vi8gP
.
рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ jsdom
рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо url рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
const url = 'http://localhost';
const jsdom = new JSDOM('<!doctype html><html><body></body></html>, { url });
рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдПрдВрдЬрд╛рдЗрдо + рдореЛрдЪрд╛ @srodrigo . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
рдЗрд╕рдиреЗ рдореМрдЬреВрджрд╛ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛ред рдпрд╣ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬрд╝ 12.0.0 рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рди рдХрд┐ рдЫреЛрдЯреА рд░рд┐рд▓реАрдЬрд╝ 11.12.0ред рдорд╛рдореВрд▓реА рд░рд┐рд▓реАрдЬ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдбреЛрдорд┐рдирд┐рдХ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдмрддрд╛рддреЗ рд╣реИрдВ (рдпрджрд┐ рдпрд╣ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╕рдордп рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ, рддреЛ рдКрдкрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ рдФрд░ рдЫрд┐рдкреА рд╣реБрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░реЗрдВ) рдЗрд╕реЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рджреЗрдЦрд╛ рдЧрдпрд╛ред рдЖрд╢реНрд░рд┐рдд рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдХреЛрдб рдЬреЛ рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЬрд▓реНрдж рд╣реА рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрд░реЛрдХреНрдд рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЬрдбрд╝ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛: --env=jsdom
рдореЗрд░реЗ jest.config.js рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝рдирд╛
testURL: 'http://localhost',
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдХрд┐рдпрд╛ред рдзрдиреНрдпрд╡рд╛рдж!
(рдпрд╣рд╛рдБ рдЬреЗрд╕реНрдЯ рдЕрдиреБрд░рдХреНрд╖рдХред) рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬреЗрд╕реНрдЯ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ about:blank
рд╕реЗ рдЙрджрд╛ localhost
рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ?
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреА рд░рд╛рдп рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдорд╛рд░реНрдЯ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдбреЗрд╡рд▓рдкрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рд░рд┐рдХреНрдд рдПрдХ рдРрд╕рд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдЬреЛ рдХрднреА рднреА рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рдЕрдкрдиреЗ рдЙрди рдРрдкреНрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд▓рдЧрднрдЧ рдХрднреА рдирд╣реАрдВ рд╣реЛрддрд╛ :рд░рд┐рдХреНрдд url
рдЬреЗрд╕реНрдЯ рдЯреАрдо рдиреЗ testURL
рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдЬреЛрдбрд╝рд╛ рд╣реИ: https://github.com/facebook/jest/pull/6792
@SimenB рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред
рдУрдкреА рдХреЗ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдореЗрд░реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╣рдо рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рд░рд┐рд▓реАрдЬрд╝ рдЪрдХреНрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реА рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рдЪрдХреНрд░ рдХреЗ рдЕрдВрдд рдХреА рдУрд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдбреЗрд╡рд▓рдкрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдФрд░ рдЙрдирдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рд╣рдордиреЗ рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдмрд┐рд▓реНрдб рдмрдирд╛рдпрд╛, рддреЛ рдЗрд╕рдиреЗ рд╕рднреА рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкрдХрдбрд╝ рд▓рд┐рдпрд╛ рдкреИрдХреЗрдЬред рдЗрд╕рд▓рд┐рдП рдЬрдм рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкрд╛рд╕ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рд╕рднреА рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
рд╣рдо рдХреБрдЫ рд╕реЗрдЯрдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ "setupTestFrameworkScriptFile" рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ (рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛) рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдФрд░ рд╕реЗрд╢рдирд╕реНрдЯреЛрд░реЗрдЬ (рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ) рдХреЗ рд▓рд┐рдП рдкреЙрд▓реАрдлрд╝рд┐рд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ window.localStorage = window.localStorage || { ... }
, рдФрд░ sessionStorage рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рд╣реИ, рдЬрд╣рд╛рдВ ...
рдирдХрд▓реА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред рдЕрдм рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдореИрдВ рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ ( window.localStorage = { ... }
) рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рджреВрдВред
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ sessionStorage.getItem
рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди "testURL" рдХреЛ " http://localhost " рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЬреИрд╕рд╛ рдХрд┐ window.sessionStorage.getItem = jest.fn();
, рдлрд┐рд░ рднреА рдмрд╛рдж рдореЗрдВ expect(window.sesssionStorage.getItem).toHaveBeenCalled()
рдпрд╣ рдХрд╣рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдирдХрд▓реА рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред
рдЬрдмрдХрд┐ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЬреЛрдбрд╝ рдПрдХ рдорд╛рдореВрд▓реА рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ, рдФрд░ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИ, рдЬрдм рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдПрдХ рдорд╛рдирдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдФрд░ рдирдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдУрд╡рд░рд░рд╛рдЗрдб рдпрд╛ рдордЬрд╛рдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ _is_ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ .
рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкреИрдХреЗрдЬ рдореЗрдВ jsdom рдЬреЛрдбрд╝рдирд╛ рд╣реИред рдЬреЗрд╕рди рдФрд░ 11.11.0 рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдпрд╣ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдмрд╛рдж рдореЗрдВ рдЬрдм рд╣рдо рдкреИрдХреЗрдЬ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдо рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП рд▓реАрдЬ рдкрд░ рдпрд╣ рд╣рдореЗрдВ рдЕрдирдмреНрд▓реЙрдХ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдб рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореЙрдХрд┐рдВрдЧ рдХреЛрдб, рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди jsdom рдореЗрдВ рдирд╣реАрдВ, рддреЛ рд╕рдорд╕реНрдпрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдмрд╛рдж рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рд╣рдо рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░реЗ рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП jsdom рдореЗрдВ рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рдирдХрд▓реА рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рд╣реИред
рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЗ рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рди рдЪрд▓рд╛рдПрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред
"рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЗ рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рди рдЪрд▓рд╛рдПрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред"
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдбреЗрд╡рд▓рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп "^" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдирд╣реАрдВ рдХрд░ рджреЗрддрд╛, рдпрд╛ рд╣рдо рдЕрдкрдиреЗ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрджреНрдз рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдРрд╕рд╛ рдХрднреА рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдорд╢реАрди рд╕реЗ рджреВрд╕рд░реА рддрдХ рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рдПрдХ рдпрд╛ рджреЛ рд╕реНрддрд░ рдиреАрдЪреЗ рдереЛрдбрд╝рд╛ рдЕрдВрддрд░ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдЙрди рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕рдЯреАрдХ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреА рдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИрдВред
"^" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ @mrobrian рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реИрдВред рдЕрдм рддрдХ рдХреА рд╕рдмрд╕реЗ рдкрд╛рдЧрд▓рдкрди рднрд░реА рдмрд╛рддред рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП npm рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
packge-lock.json
рдбреЛрдореЗрдирд┐рдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб packge-lock.json
рдФрд░ yarn.lock
рдбрд┐рдЬрд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рддреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдХреЛрдб-рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╡рд┐рд▓рдп рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдХреНрд╕рд░ рдЖрдкрдХреЛ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рдХрд░ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдареАрдХ рд╣реИ рдЕрдЧрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдмрд╣реБрдд рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░рд╛ .npmrc
:
save-exact = true
package-lock = false
рдЗрд╕рдиреЗ рдореБрдЭреЗ рдЗрд╕ рдирдИ рд▓рд╛рдЗрди рдХреЛ package.json рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдорджрдж рдХреА:
"jest": {
"verbose": true,
"testURL": "http://localhost/"
},
рдпрджрд┐ рдЖрдк jsdom рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдиреЗ url рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ
рдХреЙрдиреНрд╕реНрдЯ рдбреЛрдо = рдирдпрд╛ рдЬреЗрдПрд╕рдбреАрдУрдПрдо (``, {
рдпреВрдЖрд░рдПрд▓: "https://example.org/",
});
рдХреНрдпрд╛ рдЬреЗрд╕реНрдЯ рджреЗрд╡ рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдХрд┐ рд╕реАрдПрд▓рдЖрдИ/рдиреЛрдб рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдм "testEnvironment": "node"
рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ ( localStorage
рддреНрд░реБрдЯрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП) рдЬрдмрдХрд┐ рдкрд╣рд▓реЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА? рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ?
рдпрджрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ! рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдореЗрд░реА рджреЛрдиреЛрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдорд┐рд▓ рд░рд╣реА рд╣реИ рдЬреЛ рдЬреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ - рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рджреЛ рд╕рд╛рдзрд╛рд░рдг рдЧреИрд░-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВред рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ jsdom/рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдЬреЗрд╕реНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд╡рд╛рд▓ рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рд╣реА рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИ - jsdom рдПрдХ рдЕрд▓рдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдКрдкрд░ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдкрдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рд╣реИрдВред
рдкреИрдХреЗрдЬ.рдЬреЗрд╕рди
...
"jest": {
"testEnvironment": "node",
"roots": [
"test/javascript"
]
},
рдЗрд╕рд╕реЗ рдореЗрд░рд╛ рдХрд╛рдо рдмрдирддрд╛ рд╣реИред
@ p8ul рд╕рд╣реА рдерд╛, " http://localhost " рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ (рдЬреЗрд╕реНрдЯ 23.5.0 рдХреЗ рдмрд╛рдж рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯ рдпреВрдЖрд░рдПрд▓, #6792 рджреЗрдЦреЗрдВ):
const dom = new JSDOM(``, {
url: "http://localhost",
});
рдореЗрд░реЗ рд▓рд┐рдП рдкреВрд░рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЬреЛрдбрд╝рдиреЗ рдХреА рднреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ :
"testEnvironment": "node"
рдЬреЗрд╕реНрдЯ реирей.рел.реж рдореЗрдВ рдЕрдм рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдзрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
https://github.com/facebook/jest/issues/6766#issuecomment -412516712
@mica16 https://github.com/jsdom/jsdom/issues/2304#issuecomment -412663502 рдХреЗ рд╕рдорд╛рди
const dom = new JSDOM(``, {
url: "http://localhost",
});
рдХреНрдпрд╛ рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
рд╣рдо рдореЛрдЪрд╛/рдПрдВрдЬрд╛рдЗрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдореЗрдВ рдХреЛрдИ рдордЬрд╝рд╛рдХ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ --env node
рд╕реЗрдЯ рдХрд░рдирд╛ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
@gokulkrishh рдореИрдВрдиреЗ рдЗрд╕реЗ
http://localhost/
рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдорд╛рдиреНрдп рдпреВрдЖрд░рдПрд▓ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред
"рд╕реНрдерд╛рди.href" рддрдм рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред :)
@domenic рдореИрдВ рд╢реАрд░реНрд╖ рдкрд░ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЬреЗрд╕реНрдЯ рджреЗрдЦрд░реЗрдЦ рд╕рдВрд╕реНрдХрд░рдг 23.5.0 рдореЗрдВ рдЗрд╕ рдмрдЧ рддрдп: https://github.com/facebook/jest/issues/6766#issuecomment -+рекрез,реирел,резрем,ренрезреи
рдореИрдВ рдЬреЗрд╕реНрдЯ-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП http://localhost
testURL
рдХреЛ http://localhost
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реВрдВред
рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдВрдЬреА рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ "jest": { "testURL": " http://localhost%26quot%3B/ },
рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХреЗ рдмрдЬрд╛рдп рдЖрдИрдкреА-рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
npm audit
рдЪрд▓рд╛рддреЗ рд╕рдордп рдХреБрдЫ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред npm audit fix
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдЪреВрдВрдХрд┐ рдпрд╣ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЬреЗрд╕реНрдЯ рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдЗрдП рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдпрд╛ рдпрджрд┐ рдЪреАрдЬреЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реЛ рдЧрдИ рд╣реИрдВред
"рдордЬрд╛рдХ": {
"рдХреНрд░рд┐рдпрд╛": рд╕рдЪ,
"testURL": " http://localhost/ "
}
рдЗрд╕ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдХреЛ package.json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред
рдЖрдк рдЗрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╡рд╣рд╛рдВ jsdom рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
``` рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ 1.6
/**
рдпрд╣ ('рдореЗрд░рд╛ рдкрд░реАрдХреНрд╖рдг', () => {
рдЙрдореНрдореАрдж (2 + 2)ред рдЯреВрдмреА (4);
});
```
рдореИрдВрдиреЗ рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛:
1) рдЗрд╕реЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЬреЛрдбрд╝реЗрдВ:
/**
* @jest-environment node
*/
2) рдЗрд╕ рд╢реНрд▓реЛрдХ рдХреЛ package.json рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
"jest": {
"testURL": "http://localhost/"
}
рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред
рдореИрдВрдиреЗ рдЗрд╕реЗ package.json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛:
"jest": {
"verbose": true,
"testURL": "http://localhost/"
}
@gokulkrishh рдореИрдВрдиреЗ рдЗрд╕реЗ http://localhost/ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдорд╛рдиреНрдп URL рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред
рдореИрдВ рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд╣реВрдБред рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ Jest.config.js рдореЗрдВ рдореИрдВрдиреЗ testURL рдХрд╣рд╛рдБ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ?
@haiphu рдХрд╣реАрдВ рднреА jest.config.js
рдореЗрдВ рдиреАрдЪреЗ рдХреА рддрд░рд╣
{
"testURL": "http://localhost/"
// Your other config
}
рдореИрдВрдиреЗ рдиреАрдЪреЗ рдЕрдкрдиреЗ package.json рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдФрд░ рдпрд╣ рдЕрдм рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ :)
"jest": {
"testURL": "http://localhost/"
},
рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХреНрдпреЛрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рддреНрд░реБрдЯрд┐ рд╡рд┐рднрд┐рдиреНрди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реБрдИ рдереАред
рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ + рд▓рд░реНрди рдХреЗ рд╕рд╛рде рдПрдХ рдореЛрдиреЛ-рд░реЗрдкреЛ рд╕реЗрдЯрдЕрдк рд╣реИред рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдкреИрдХреЗрдЬ рдореЗрдВ typescript@^3.3.3
рдерд╛ред рдореИрдВрдиреЗ рдПрдХ рдирдпрд╛ рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝рд╛ рдФрд░ рдирд╡реАрдирддрдо typescript@^3.5.3
ред рдЬрдм рдореИрдВрдиреЗ рдореМрдЬреВрджрд╛ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдпрд╛, рддреЛ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред
рдЕрдЧрд░ рдореИрдВ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реВрдВ - рдпрд╛ рддреЛ typescript@^3.3.3
рдпрд╛ typescript@^3.5.3
, рддреЛ рддреНрд░реБрдЯрд┐ рджреВрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдореБрдЭреЗ testURL
рд╕рд╛рде рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдкрдбрд╝рд╛ред
@ tylerreece22 @gokulkrishh рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛! рдореИрдВ
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЬреЗрд╕реНрдЯ рдХрд╛ testURL
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рд░реНрджреЗрд╢ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рджреЗрдЦреЗрдВ https://jestjs.io/docs/en/configuration#testurl -string
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реАрдзреЗ jsdom рдкрд░ рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореЛрдЪрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп)ред рдЗрд╕реЗ рдЕрдкрдиреЗ setup.js рдореЗрдВ рд░рдЦреЗрдВ:
let jsdom = require('jsdom-global')(
undefined,
{
url: "http://localhost"
}
);
рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ .. рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ jsdom рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ .. рдореИрдВ рдХреБрдЫ рдиреЛрдб рдХреЗрд╡рд▓ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЬреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдлрд┐рд░ рднреА рдпрд╣ рддреНрд░реБрдЯрд┐ рд╕реАрдЖрдИ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреА рд╣реИ рдЬрдм рдЬреЗрд╕реНрдЯ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ ^11
рд░реЗрдВрдЬ рдХреЗ рднреАрддрд░ рдирд╡реАрдирддрдо рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ .. рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ .. рдЕрдм рддрдХ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ
рдпрджрд┐ рдЖрдк jsdom
рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рдЬреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд┐рдЧ рдкреНрд░реЙрдкрд░реНрдЯреА testEnvironment
рд╕реЗ node
рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред ( testURL
рдХреЛ рдЫреВрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ)
https://jestjs.io/docs/en/configuration#testenvironment -string
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реБрдзрд╛рд░ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА, рдпрд╣ new JSDOM('', { url: 'https://localhost' })
рдЗрд╕реЗ рдЕрдкрдиреЗ package.json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
"рдордЬрд╛рдХ": {
"рдХреНрд░рд┐рдпрд╛": рд╕рдЪ,
"testURL": " http://localhost/ "
}
рдпреВрдЖрд░рдПрд▓ рд╕реЗрдЯ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ... рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ .. рдХреНрдпрд╛ рдХреБрдЫ рдФрд░ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ?
рдпреВрдЖрд░рдПрд▓ рд╕реЗрдЯ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ... рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ .. рдХреНрдпрд╛ рдХреБрдЫ рдФрд░ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ?
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛ред рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдХреЛрдб рдерд╛
const { JSDOM } = require('jsdom');
const jsdom = new JSDOM('<!doctype html><html><body></body></html>');
рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣рдореЗрдВ URL рдХреЛ JSDOM рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдерд╛
const { JSDOM } = require('jsdom');
const jsdom = new JSDOM('<!doctype html><html><body></body></html>', {
url: 'http://localhost/',
});
рдЗрд╕рд╕реЗ рдорд╛рдорд▓рд╛ рдареАрдХ рд╣реЛ рдЧрдпрд╛ред
рдпреВрдЖрд░рдПрд▓ рд╕реЗрдЯ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ... рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ .. рдХреНрдпрд╛ рдХреБрдЫ рдФрд░ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ?
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛ред рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдХреЛрдб рдерд╛
const { JSDOM } = require('jsdom'); const jsdom = new JSDOM('<!doctype html><html><body></body></html>');
рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣рдореЗрдВ URL рдХреЛ JSDOM рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдерд╛
const { JSDOM } = require('jsdom'); const jsdom = new JSDOM('<!doctype html><html><body></body></html>', { url: 'http://localhost/', });
рдЗрд╕рд╕реЗ рдорд╛рдорд▓рд╛ рдареАрдХ рд╣реЛ рдЧрдпрд╛ред
рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдпреВрдЖрд░рдПрд▓ рдХреЛ рдЬреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдбрд╛рд▓рдиреЗ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред url рдХреЛ de jsdom рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдбрд╛рд▓рдиреЗ рд╕реЗ рдЪрд╛рд▓ рдЪрд▓реАред
рдЬреЗрд╕реНрдЯ рдХреЛ реиреи рд╕реЗ реирем рдлрд┐рдХреНрд╕реНрдб рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред
рдмрд╕ рдЬреЗрд╕реНрдЯ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ рд╡рд░реНрд╖ реирежреиреж рдореЗрдВ реирем.рел.реж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ
рдЗрд╕реЗ рдЕрдкрдиреЗ package.json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
"рдордЬрд╛рдХ": {
"рдХреНрд░рд┐рдпрд╛": рд╕рдЪ,
"testURL": " http://localhost/ "
}
рд╡рд╣ testURL
рдбрд┐рдлрд╝реЙрд▓реНрдЯ URL рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо Jest 26.x
ред рдореБрдЭреЗ рд╡рд╣реА рдХрд░рдирд╛ рдерд╛ рдЬреЛ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@gokulkrishh рдореИрдВрдиреЗ рдЗрд╕реЗ
http://localhost/
рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдорд╛рдиреНрдп рдпреВрдЖрд░рдПрд▓ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред