рдЖрдк рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗ! рдбреЗрд╡рд▓рдкрд░ рдХреА рдЖрдВрдЦреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрднреЛрдХреНрддрд╛ рдкреНрд░реЗрд░рд┐рдд рдЕрдиреБрдмрдВрдз

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЙрдкрднреЛрдХреНрддрд╛ рдкреНрд░рд╡реГрддреНрдд рд╕рдВрд╡рд┐рджрд╛ рд╣рд▓ рдХрд░рддреА рд╣реИрдВ, рдФрд░ рдпрд╣ рджрд┐рдЦрд╛рддреА рд╣реИрдВ рдХрд┐ Node.js рдФрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдХреЗ рд╕рд╛рде Pact рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдФрд░ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред


рд╕рдорд╕реНрдпрд╛рдУрдВ


рдЙрддреНрдкрд╛рджреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдкрд░рд┐рджреГрд╢реНрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЪрдпрдирд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХреЛрдВ рдХреЗ рдПрдХреАрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рд▓рд╛рдЗрд╡ рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкрд░рд┐рдгрд╛рдо рджреЗрддреЗ рд╣реИрдВ (рд▓рдбрд╝рд╛рдИ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреА рдЧрд┐рдирддреА рдирд╣реАрдВ)ред рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рд╡реЗ рд╕рдмрд╕реЗ рдорд╣рдВрдЧреЗ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИрдВред

  • рдпрд╣ рдЕрдХреНрд╕рд░ рдЧрд▓рддреА рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХреАрдХрд░рдг рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрд╕рдПрд▓рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдмрд╛рдд рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рддреЛ рдЯреАрдореЛрдВ рдХреЛ рдпрд╛ рддреЛ рджреЗрд░реА рд╕реЗ рд░рд┐рд▓реАрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдХреЗ рд▓рд┐рдП рдЖрд╢рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдмрд┐рдирд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рдбрд╝рд╛рдИ рдореЗрдВ рдЙрддрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрд╢рд╛ рдХреЛрдИ рд░рдгрдиреАрддрд┐ рдирд╣реАрдВ рд╣реИ ред рдФрд░ newfangled рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдВ рдХреЗрд╡рд▓ рдПрдХреАрдХрд░рдг рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреА рд╣реИрдВред
  • рдПрдХ рдФрд░ рджрд░реНрдж рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ ред рдХрдИ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреБрдбрд╝рдирд╛рд░ред рдбреЗрдЯрд╛ рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдХрд┐рддрдирд╛ рдХрд░реАрдм рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ рддрд╛рд░реАрдЦ рддрдХ рд▓рд╛рдиреЗ рдФрд░ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ?
  • рдЯреЗрд╕реНрдЯ рдмрд╣реБрдд рдЕрд╕реНрдерд┐рд░ рд╣реИрдВ ред рдФрд░ рди рдХреЗрд╡рд▓ рдЙрд╕ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдХрд╛рд░рдг рдЬрд┐рд╕рдХрд╛ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ред рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдкрдбрд╝реЛрд╕реА рдЯреАрдо рдиреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЪреЗрдХ рд▓реЙрдиреНрдЪ рдХрд┐рдП рд╣реИрдВ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕реНрдерд┐рддрд┐ рдХреЛ рддреЛрдбрд╝рддреЗ рд╣реИрдВ! рдХрдИ рдЭреВрдареА рдирдХрд╛рд░рд╛рддреНрдордХ рдЬрд╛рдБрдЪ, рдкрд░рддрджрд╛рд░ рдкрд░реАрдХреНрд╖рдг @Ignored рдкрд░ рдЕрдкрдирд╛ рдЬреАрд╡рди рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХреАрдХрд░рдг рдХреЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреАрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рд░рд┐рд▓реАрдЬ рдЙрдореНрдореАрджрд╡рд╛рд░ рдЙрддрд╛рд░рд╛ - рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рднреА рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛ред рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдорд░реНрдкрд┐рдд рдкрд░реАрдХреНрд╖рдг рдЫреЛрд░реЛрдВ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рдорд░реНрдерди рдХреА рд▓рд╛рдЧрдд рдХреЛ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреА рдХреАрдордд рдкрд░ред
  • рдРрд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдкрд░рд┐рдгрд╛рдо рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
  • рдФрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг рдХрд╛ рддреБрд░рдВрдд рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рд╣реИред рдпрд╣ рдПрдХреАрдХрд░рдг рдХреА рдкрд░рддреЛрдВ рдХреЗ рдкреАрдЫреЗ рдЧрд╣рд░реЗ рдЫрд┐рдк рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдпрд╣ рдХрдИ рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЗ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕рдВрдпреЛрдЬрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдПрдХреАрдХрд░рдг рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕реНрдерд┐рд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдХреНрдпреВрдП, рджреЗрд╡ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдСрдкреНрд╕ рд╕реЗ рдЧрдВрднреАрд░ рдирд┐рд╡реЗрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХреЛрдИ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рдХрд┐ рд╡реЗ рдкрд░реАрдХреНрд╖рдг рдкрд┐рд░рд╛рдорд┐рдб рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдВрд╕рд╛рдзрди рдЕрд░реНрдерд╡реНрдпрд╡рд╕реНрдерд╛ рдЙрдиреНрд╣реЗрдВ рд╕рдм рдХреБрдЫ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИред рдЙрдирдХреЗ рдореВрд▓реНрдп рдХрд╛ рдореБрдЦреНрдп рд╕реНрд░реЛрдд рдкрд░реНрдпрд╛рд╡рд░рдг рд╣реИред

рдЙрд╕реА рдкрд┐рд░рд╛рдорд┐рдб рдХреЗ рдиреАрдЪреЗ рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╣рдо рдЫреЛрдЯреЗ рд╕рдорд░реНрдерди рд╕рд┐рд░рджрд░реНрдж рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ - рдЕрд▓рдЧрд╛рд╡ рдЬрд╛рдВрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред рджрд╛рдиреЗрджрд╛рд░, рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЫреЛрдЯрд╛, рдмрд╛рд╣рд░реА рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХрдоред рдкрд┐рд░рд╛рдорд┐рдб рдХреЗ рдмрд╣реБрдд рдиреАрдЪреЗ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВред рд╣рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпреЛрдВ, рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рд╡реНрдпрд╡рд╕рд╛рдп рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЪрд▓рддреЗ рд╣реИрдВред рдпреЗ рдкрд░реАрдХреНрд╖рдг рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рд╣реА рд╣рдо рдкрд┐рд░рд╛рдорд┐рдб рдХреЗ рдиреАрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдХрд┐рд╕реА рдЪреАрдЬ рд╕реЗ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рд╕реНрдЯрдмреНрд╕ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ - рд╕рдВрдкреВрд░реНрдг рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЗрдХрд╛рдЗрдпрд╛рдБред рдпрд╣ рдкреНрд▓рдЧ рдХреА рдорджрдж рд╕реЗ рд╣реИ рдХрд┐ рд╣рдо рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рдШрдЯрдХреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡реЗ рдЪреЗрдХ рдХреА рд╡реИрдзрддрд╛ рдХреЛ рднреА рдХрдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕реНрдЯрдм рд╕рд╣реА рдбреЗрдЯрд╛ рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реИ? рдЗрд╕рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ?

рд╕рдорд╛рдзрд╛рди рд╡реНрдпрд╛рдкрдХ рдкреНрд░рд▓реЗрдЦрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХреЛрдВ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рд╕реВрддреНрд░ рдЕрднреА рднреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдЪреНрдЫрд╛ рдкреНрд░рд▓реЗрдЦрди рдПрдХ рдЬреАрд╡рд┐рдд рдХрд▓рд╛рдХреГрддрд┐ рд╣реИ рдЬреЛ рд▓рдЧрд╛рддрд╛рд░ рд╕реБрдзрд╛рд░ рдХрд░ рд░рд╣реА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЯреАрдо рд╕рдорд╕реНрдпрд╛ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕рдордЭрддреА рд╣реИред рдлрд┐рд░ рдкреНрд░рд▓реЗрдЦрди рд╕реНрдЯрдмреНрд╕ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЛ рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ?

рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░, рдЖрдк рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕реНрдЯрдмреНрд╕ рдЙрдиреНрд╣реАрдВ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рд░реВрдкрдг рд╕рд╛рдХреНрд╖реНрдп рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рд╕реНрдЯрдмреНрд╕ рдмрдирд╛рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ), рд╡реЗ рдЧрд▓рдд рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рд╕реНрдЯрдм рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ (рд╣рд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде), рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдХреАрдХрд░рдг рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рд▓реЗрдЦрди рдЖрдорддреМрд░ рдкрд░ рдиреАрдЪреЗ рдХреА рдУрд░ рдмрдврд╝рддрд╛ рд╣реИ - рдЧреНрд░рд╛рд╣рдХ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдЪрд╢реНрдореЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЕрдиреНрдп рд╕реЗрд╡рд╛ рд╕реЗрд╡рд╛ рдХрд╛ рдЧреНрд░рд╛рд╣рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред рдпрд╣ рд╡реНрдпрдХреНрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрднреЛрдХреНрддрд╛ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдбреЗрдЯрд╛ рдХреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡реЗ рдЙрд╕ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдзрд╛рд░рдгрд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдЕрдЬреНрдЮрд╛рдирддрд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реАрд░рдо рдХрд╛ рдирд┐рдпрдо рд╣реИ ред



рд╣рд┐рд░реБрдо рд░рд╛рдЗрдЯ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ Google рдХреЗ рдЕрдВрджрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡ рдЙрди рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдмреНрд░реЗрдХрдбрд╛рдЙрди рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдирд┐рд╣рд┐рдд (рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ) рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред рдЗрд╕ рддрд░рд╣ рдХреА рдЫрд┐рдкреА рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдПрдкреАрдЖрдИ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреА рд╣реИред

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

рд╕реАрдбреАрд╕реА рдХреНрдпрд╛ рд╣реИ?


рддреАрди рдкреНрд░рдореБрдЦ рддрддреНрд╡:

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

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

рдЕрдиреБрдмрдВрдз рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рд▓рд┐рдП рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред рдПрдкреАрдЖрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреА рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред

рд╕реАрдбреАрд╕реА рдХрд╛ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдЕрдкрдиреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдЕрдкрдиреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рд╕рдордЭ рд▓рд╛рдирд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ BDD рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд╣реИ, рддреАрди рдЕрдореАрдЧреЛ рдХреА рдмреИрдардХреЛрдВ рдореЗрдВ рдЖрдк рдЕрдиреБрдмрдВрдз рдХреЗ рд▓рд┐рдП рдЦрд╛рд▓реА рд╕реНрдХреЗрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдВрддрддрдГ, рдпрд╣ рдЕрдиреБрдмрдВрдз рд╕рдВрдЪрд╛рд░ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдХрд╛рдо рднреА рдХрд░рддрд╛ рд╣реИ; рд╕рдорд╕реНрдпрд╛ рдХреНрд╖реЗрддреНрд░ рдХреА рдПрдХ рдЖрдо рд╕рдордЭ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдФрд░ рдЯреАрдореЛрдВ рдХреЗ рднреАрддрд░ рдФрд░ рдмреАрдЪ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред

рд╕рдВрдзрд┐


CD, Pact рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдо рд╕рдореНрдореЗрд▓рди рдХреЗ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВред рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ, рдЯреАрдо рдПрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рдЕрдиреБрд╕реВрдЪреА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреА рд╣реИ - рдЕрдм рддрдХ рд╡реЛрдЯрд┐рдВрдЧ рдпрд╛ рдиреЛрдЯреНрд╕ рдЬреИрд╕реА рдХрд┐рд╕реА рднреА рдХрд╣рд╛рдиреА рдХреЗ рдмрд┐рдирд╛, рдХреЗрд╡рд▓ рд░рд┐рдкреЛрд░реНрдЯ рдЧреНрд░рд┐рдб рдХрд╛ рдЙрддреНрдкрд╛рджрдиред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдБ рд╣реИ ред

рддреАрди рдЪрд╛рд░ рдЕрдореАрдЧреЛ рдХреА рдПрдХ рдмреИрдардХ рдореЗрдВ рдПрдХ рдЙрддреНрдкрд╛рдж, рдПрдХ рдкрд░реАрдХреНрд╖рдХ, рдмреИрдХрдПрдВрдб рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдорд┐рд▓рддреЗ рд╣реИрдВред рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐

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

 { "talks":[ { "title":"      ", "speakers":[ { "name":" " } ], "time":"2019-05-27T12:00:00+03:00" } ] } 

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

 yarn add --dev @pact-foundation/pact 

рдФрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдерд╛рдиреАрдп рд╕реНрдЯрдм рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд░рд┐рдкреЛрд░реНрдЯ рд╢реЗрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░реЗрдЧрд╛:

 const provider = new Pact({ //      consumer: "schedule-consumer", provider: "schedule-producer", // ,     port: pactServerPort, //  pact     log: path.resolve(process.cwd(), "logs", "pact.log"), // ,     dir: path.resolve(process.cwd(), "pacts"), logLevel: "WARN", //  DSL  spec: 2 }); 

рдЕрдиреБрдмрдВрдз рдПрдХ JSON рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЛрдб рдореЗрдВ рд╕реНрдЯрдм рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗ рдмрдирддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрд╡рд▓рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред

 provider.setup().then(() => provider .addInteraction({ uponReceiving: "a request for schedule", withRequest: { method: "GET", path: "/schedule" }, willRespondWith: { status: 200, headers: { "Content-Type": "application/json;charset=UTF-8" }, body: { talks: [ { title: "      ", speakers: [ { name: " " } ], time: "2019-05-27T12:00:00+03:00" } ] } } }) .then(() => done()) ); 

рдпрд╣рд╛рдВ, рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕реЗрд╡рд╛ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдкреИрдХреНрдЯ-рдЬреЗрдПрд╕ рдореИрдЪреЛрдВ рдХреЗ рдирд┐рд░реНрдзрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЛрдВ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ ред

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

 it("fetches schedule", done => { fetch(`http://localhost:${pactServerPort}/schedule`) .then(response => response.json()) .then(json => expect(json).toStrictEqual({ talks: [ { title: "      ", speakers: [ { name: " " } ], time: "2019-05-27T12:00:00+03:00" } ] })) .then(() => done()); }); 

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

рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди, рд╕рдВрдзрд┐ рдкреБрд╖реНрдЯрд┐ рдХрд░рддреА рд╣реИ рдХрд┐ рдареВрдВрда рдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдерд╛ред рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреЛ pact.log рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рднрд┐рдиреНрди рд░реВрдк рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 E, [2019-05-21T01:01:55.810194 #78394] ERROR -- : Diff with interaction: "a request for schedule" Diff -------------------------------------- Key: - is expected + is actual Matching keys and values are not shown { "headers": { - "Accept": "application/json" + "Accept": "*/*" } } Description of differences -------------------------------------- * Expected "application/json" but got "*/*" at $.headers.Accept 


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

 { "consumer": { "name": "schedule-consumer" }, "provider": { "name": "schedule-producer" }, "interactions": [ { "description": "a request for schedule", "request": { "method": "GET", "path": "/schedule", "headers": { "Accept": "application/json" } }, "response": { "status": 200, "headers": { "Content-Type": "application/json;charset=UTF-8" }, "body": { "talks":[ { "title":"      ", "speakers":[ { "name":" " } ], "time":"2019-05-27T12:00:00+03:00" } ] }}} ], "metadata": { "pactSpecification": { "version": "2.0.0" } } } 

рд╡рд╣ рдпрд╣ рдЕрдиреБрдмрдВрдз рдмреИрдХрдПрдВрдб рдбреЗрд╡рд▓рдкрд░ рдХреЛ рджреЗрддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдкреАрдЖрдИ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдкрд░ рд╣реИред рдкреИрдХреНрдЯ рдореЗрдВ рдПрдХ рдкреИрдХреНрдЯ-рдЬреЗрд╡реАрдПрдо-рдкреНрд░рджрд╛рддрд╛-рд╡рд╕рдВрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рдореЙрдХрдПрдорд╡реАрд╕реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВрдЧреЗ, рдЬреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реАрдбреАрд╕реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЗ рдЕрдкрдиреЗ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдкреНрд░рд╛рд░реВрдкреЛрдВ рд╕реЗ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдмрд┐рдВрджреБ рднреА рд╣реИред рдЗрд╕рдХрд╛ рдореВрд▓ рдЕрдиреБрдмрдВрдз рдкреНрд░рд╛рд░реВрдк рдХреЗрд╡рд▓ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдЕрдиреБрдмрдВрдз рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ - рдкреИрдХреНрдЯ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрд┐рд╕рдореЗрдВ рдЬреЗрд╡реАрдПрдо, рд░реВрдмреА, рдЬреЗрдПрд╕, рдЧреЛ, рдкрд╛рдпрдерди рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВред

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

 buildscript { // ... dependencies { classpath "org.springframework.cloud:spring-cloud-contract-pact:2.1.1.RELEASE" } } plugins { id "org.springframework.cloud.contract" version "2.1.1.RELEASE" // ... } // ... dependencies { // ... testImplementation 'org.springframework.cloud:spring-cloud-starter-contract-verifier' } 

рдФрд░ рдпрд╣ рдлреНрд░реИрдЯреЗрдиреНрдбрд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕рдВрдзрд┐ рдЕрдиреБрдмрдВрдз рдХреЛ src/test/resources/contracts рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕реНрдкреНрд░рд┐рдВрдЧ-рдХреНрд▓рд╛рдЙрдб-рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдкреНрд▓рдЧрдЗрди рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЛ рдШрдЯрд╛рддрд╛ рд╣реИред рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди, рдЬреЗрдирд░реЗрдЯрдХреНрд░реЗрдХреНрдЯрдЯреЗрд╕реНрдЯреНрд╕ рдЧреНрд░реЗрдбрд▓ рдЯрд╛рд╕реНрдХ рдХреЛ рдЕрдВрдЬрд╛рдо рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдмрд┐рд▓реНрдб / рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдЯреЗрд╕реНрдЯ-рд╕реЛрд░реНрд╕ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдирд┐рдореНрди рдЯреЗрд╕реНрдЯ рдЬреЗрдирд░реЗрдЯ рдХрд░рддрд╛ рд╣реИред

 public class ContractVerifierTest extends ContractsBaseTest { @Test public void validate_aggregator_client_aggregator_service() throws Exception { // given: MockMvcRequestSpecification request = given() .header("Accept", "application/json"); // when: ResponseOptions response = given().spec(request) .get("/scheduler"); // then: assertThat(response.statusCode()).isEqualTo(200); assertThat(response.header("Content-Type")).isEqualTo("application/json;charset=UTF-8"); // and: DocumentContext parsedJson = JsonPath.parse(response.getBody().asString()); assertThatJson(parsedJson).array("['talks']").array("['speakers']").contains("['name']").isEqualTo( /*...*/ ); assertThatJson(parsedJson).array("['talks']").contains("['time']").isEqualTo( /*...*/ ); assertThatJson(parsedJson).array("['talks']").contains("['title']").isEqualTo( /*...*/ ); } } 


рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрдЦреЗрдВрдЧреЗ:

 java.lang.IllegalStateException: You haven't configured a MockMVC instance. You can do this statically 

рдЪреВрдВрдХрд┐ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдкреНрд▓рдЧ-рдЗрди рдХреЛ рдмрддрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдордиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдиреБрдмрдВрдзреЛрдВ рд╕реЗ рдЙрддреНрдкрдиреНрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛ред

 public abstract class ContractsBaseTest { private ScheduleController scheduleController = new ScheduleController(); @Before public void setup() { RestAssuredMockMvc.standaloneSetup(scheduleController); } } 


рдкреАрдврд╝реА рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ-рдХреНрд▓рд╛рдЙрдб-рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рдЧреНрд░реЗрдбрд▓ рдкреНрд▓рдЧрдЗрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

 contracts { baseClassForTests = 'ru.example.schedule.ContractsBaseTest' } 


рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ:
 public class ContractVerifierTest extends ContractsBaseTest { @Test public void validate_aggregator_client_aggregator_service() throws Exception { // ... } } 

рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ - рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдЕрднреА рддрдХ рд╕реЗрд╡рд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рд╡рд╣ рдПрдХ рдЕрдиреБрдмрдВрдз рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡рд╣ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред

рд╕реЗрд╡рд╛ рдбреЗрд╡рд▓рдкрд░ рдЕрдиреБрдмрдВрдз рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдХреНрдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИред

рд╕рдВрдзрд┐ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдПрдХ рдРрд╕реЗ рдкреИрдХреНрдЯ-рдмреНрд░реЛрдХрд░ рдХреЛ рддреИрдирд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЛ рдПрдХрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрдирдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред



рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдордп рдмреНрд░реЛрдХрд░ рдХреЛ рдПрдХ рдирдпрд╛ рдЬреЗрдирд░реЗрдЯ рдЕрдиреБрдмрдВрдз рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╕реАрдЖрдИ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛрдб рдореЗрдВ URL рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдмрдВрдз рдХреЗ рдЧрддрд┐рд╢реАрд▓ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рдЙрдб рдХреЙрдиреНрдЯреНрд░реИрдХреНрдЯ рднреА рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рд╕реАрдбреАрд╕реА рдкреНрд░рдпреЛрдЬреНрдпрддрд╛


рдЙрдкрднреЛрдХреНрддрд╛ рдкреНрд░рд╡реГрддреНрдд рд╕рдВрд╡рд┐рджрд╛ рдХреА рд╕реАрдорд╛рдПрдБ рдХреНрдпрд╛ рд╣реИрдВ?

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

рд╡реЗ рдИ 2 рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЬрдЧрд╣ рдирд╣реАрдВ рд▓реЗрддреЗ рд╣реИрдВ , рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯрдмреНрд╕ рдЕрднреА рднреА рд╕реНрдЯрдмреНрд╕ рдмрдиреЗ рд╣реБрдП рд╣реИрдВ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЗ рдореЙрдбрд▓, рдЬреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИред рдЙрдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЬрдЯрд┐рд▓ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реАрдбреАрд╕реА рдПрдкреАрдЖрдИ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ред рд╡реЗ рдкреНрд▓реЗрди рдУрд▓реНрдб рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдорд╣рдВрдЧреЗ рд╣реИрдВред рдкреИрдХреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ - рдпрджрд┐ рдЖрдк рдЕрдиреБрдмрдВрдз рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдпрд╛ рдЧрд▓рдд рд╡реНрдпрд╛рдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрдиреБрдмрдВрдз рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рд╕рднреА рдПрдкреАрдЖрдИ рддреНрд░реБрдЯрд┐ рдХреЛрдбреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдЙрдиреНрд╣реЗрдВ рдЙрд╕реА рддрд░рд╣ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЕрдиреБрдмрдВрдз рдХреЗрд╡рд▓ рдЙрд╕ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕рдХреЗ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ ред рдФрд░ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдХрдо рдирд╣реАрдВред

рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдиреБрдмрдВрдз рднреА рдПрдкреАрдЖрдИ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрдмрдВрдз рд▓рд╛рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╡рд╕рд░ рд╣реИ ред рд╕реАрдбреАрд╕реА рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЕрд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдг рдПрдХ рдЙрдкрдпреЛрдЧреА рд╕рд┐рдореЗрдВрдЯрд┐рдХ рднрд╛рд░ рд╡рд╣рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рд╕рдорд░реНрдерди рдХреА рд▓рд╛рдЧрдд рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЕрдиреБрдмрдВрдз рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд╛рда рдХреНрд╖реЗрддреНрд░ рдХреА рдиреНрдпреВрдирддрдо рд▓рдВрдмрд╛рдИ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рдкреНрд░рддрд┐ рдЙрджрд╛рд╕реАрди рд╣реИ (рд╡рд╣ рддреЛрд▓реЗрд░рди рд░реАрдбрд░ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ), рддреЛ рдЗрд╕ рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп рдореЗрдВ рд╣рд░ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрдмрдВрдз рдФрд░ рдЙрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рд▓реЛрдЧреЛрдВ рдХреА рдирд╕реЛрдВ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪреЗрдХ рдХреЛ рдПрдкреАрдЖрдИ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╣реА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


CDC рдПрдХреАрдХрд░рдг рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд╡рд░реНрдгрди рдХрд░рдХреЗ рдЙрддреНрдкрд╛рдж рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдФрд░ рд╕реЗрд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдордЭ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдкрдХрд░рдг рдЬреЛрдбрд╝рдиреЗ рдХреА рд▓рд╛рдЧрдд рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рдирдП рдЕрдореВрд░реНрдд рдФрд░ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕реА рд╕рдордп, рд╕реАрдбреАрд╕реА рдЯреВрд▓ рдФрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдкрдХреНрд╡рддрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдЪреБрдХреЗ рд╣реИрдВред рдЯреЗрд╕реНрдЯ :)

27-28 рдордИ рдХреЛ рдХреНрд╡рд╛рд▓рдХреЙрдиреНрдлрд╝ рд╕рдореНрдореЗрд▓рди рдореЗрдВ, рдЖрдВрджреНрд░реЗрдИ рдорд╛рд░реНрдХреЗрд▓реЛрд╡ рдареЗрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рддрдХрдиреАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ , рдФрд░ рдЖрд░реНрдерд░ рдЦрд┐рдиреНрдЯреЗрд▓рд╕реЗрд╡ рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рднрд░реА рд╣реБрдИ рдлреНрд░рдВрдЯ-рдПрдВрдб рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдЬрдм рдПрдХ рдЫреЛрдЯреА рд╕реА рддреНрд░реБрдЯрд┐ рдХреА рдХреАрдордд рднреА рджрд╕рд┐рдпреЛрдВ рд╣рдЬрд╝рд╛рд░ рдЙрджрд╛рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╣реИред

рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП рдЪреИрдЯ рдХрд░реЗрдВ!

Source: https://habr.com/ru/post/hi452960/


All Articles