рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдХрд╛рд╕: рдХреМрд╢рд▓ рдореЗрдВ рд╕реБрдзрд╛рд░

рдкрд░реАрдХреНрд╖рдг рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреМрд╢рд▓ рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рд╣рд┐рдЪрдХрддреЗ рд╣реИрдВред

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

рдЫрд╡рд┐

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

рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдк рдПрдХ рдореМрд╕рдо рдРрдк рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдЖрдкрдиреЗ рдХрдИ рджрд┐рдиреЛрдВ рдпрд╛ рд╣рдлреНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдХреЛрдб рдХреЛ рдФрд░ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВред

рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЛ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХрд╛ рд╣рд░ рд╡рд┐рд╡рд░рдг рдпрд╛рдж рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЖрдк рдЗрд╕реЗ рдмрджрд▓рддреЗ рд╣реИрдВ ... рдФрд░ рдирд░рдХ ... рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ? рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рдЙрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ? рдпрд╣ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдХреБрдЫ рдФрд░ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред

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

рдкреНрд░рддреНрдпреЗрдХ рдЯреАрдо рдХреЛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╕рдордп рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдПрдХ рдРрд╕рд╛ рд╡реНрдпрдХреНрддрд┐ рдирд╣реАрдВ рдмрдирдирд╛ рдЪрд╛рд╣рддреЗ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ?

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

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

рдЪрд▓реЛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдУ!

рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг


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

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

рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд▓рд╛рдн:

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

рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдХрд╛рд╕ (TDD)

рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕рдордЭрдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрди 2 рдирд┐рдпрдореЛрдВ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ:

  1. рдПрдХ рдкрд░реАрдХреНрд╖рд╛ рд▓рд┐рдЦреЗрдВ рдЬреЛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПред
  2. рдлрд┐рд░ рдХреЛрдб рд▓рд┐рдЦреЗрдВ рдЬреЛ рдкрд░реАрдХреНрд╖рд╛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЬрдм рд╣рдо рдЯреАрдбреАрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо "рд▓рд╛рд▓, рд╣рд░реЗ, рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░" рд▓реВрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд▓рд╛рд▓: рдЖрдк рдмрд┐рдирд╛ рдХреЛрдб рд▓рд┐рдЦреЗ рдЕрд╕рдлрд▓ рдкрд░реАрдХреНрд╖рд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВред

рд╣рд░рд╛: рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХреЛрдб рд▓рд┐рдЦреЗрдВ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рднрд▓реЗ рд╣реА рдХреЛрдб рдЖрдкрдХреЛ рдмреЗрд╡рдХреВрдл рд▓рдЧрддрд╛ рд╣реЛред

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

рдПрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд░рдЪрд┐рдд рдХрд░рдирд╛


рдЬреЗрд╕реНрдЯ рд╕рдВрд░рдЪрдирд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

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

рдпрд╣ рдпрд╛ рдкрд░реАрдХреНрд╖рдг: рдЖрдкрдХреА рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгред рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рдорд╛рди рд╣реИрдВред рд╡рд░реНрдгрдирд╛рддреНрдордХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдирд╛рдордХрд░рдг рдЖрдкрдХреЗ рдКрдкрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк "рдЪрд╛рд╣рд┐рдП" рд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

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

рдХрд┐рд╕реА рднреА рдкрд░реАрдХреНрд╖рд╛ рдХреЛ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП:

рдЖрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкрд░реАрдХреНрд╖рдг рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд░реНрдгрди рдкрд░ рдЗрд╕реЗ рдФрд░ рдЗрд╕реЗ : it.skip (...) рдпрд╛ description.skip (...) ред .Skip рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП , рдЖрдк рдЬреЗрд╕реНрдЯ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдпрд╛ рд╕рдореВрд╣ рдХреА рдЕрдирджреЗрдЦреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред

рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рд╡рд░реНрдгрди рдкрд░ рдФрд░ рдЗрд╕реЗ : it.only (...) рдпрд╛ description.only (...) рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ ред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ "рдбреАрдмрдЧ" рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЬреЗрд╕реНрдЯ рд╕реЗрдЯрдЕрдк


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

рдЖрдкрдХреЛ рдХреЗрд╡рд▓ Node.js рдФрд░ npm рдпрд╛ Yarn рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк Node.js рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо ES6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдПрдХ рдирдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВред

mkdir test-example && cd test-example npm init -y # OR yarn init -y 

-рдореИрдВ рд╕рднреА npm рдпрд╛ рдпрд╛рд░реНрди рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм "рд╣рд╛рдВ" рджреЗрддрд╛ рд╣реВрдВред рдЙрд╕реЗ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдзрд╛рд░рдг рдкреИрдХреЗрдЬ рдмрдирд╛рдирд╛ рдерд╛ред json рдлрд╝рд╛рдЗрд▓ред

рдлрд┐рд░ рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдЬреЗрд╕реНрдЯ рдХреЛ рдЬреЛрдбрд╝реЗрдВред

 yarn add jest --dev 

рдлрд┐рд░ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдирд┐рдореНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реЗрдВред Json :

 "scripts": { "test": "jest" } 

рдпрд╛рд░реНрди рдкрд░реАрдХреНрд╖рдг рдЖрдкрдХреА рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЪрд▓рд╛рдПрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЬреЗрд╕реНрдЯ __tests__ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЗ рдЕрдВрджрд░ рдпрд╛ .spec.js, рдпрд╛ .test.js рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИред

рд╡рд╣ рд╕рдм рд╣реИред рдХреНрдпрд╛ рдЖрдк рдкрд╣рд▓рд╛ рдЯреЗрд╕реНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред

рдорд╛рдЪрд┐рд╕ (рдирдореВрдиреЗ)


рдЬрдм рдЖрдк рдХреБрдЫ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрдирдкреБрдЯ рдФрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЬреЗрд╕реНрдЯ рд╣рдорд╛рд░реЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдореВрдиреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

 expect(input).matcher(output) 

рдЬреЗрд╕реНрдЯ рдХреЗ рдХрдИ рдирдореВрдиреЗ рд╣реИрдВ, рдпрд╣рд╛рдБ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ:

toBe: рд╕рдЦреНрдд рд╕рдорд╛рдирддрд╛ (===) рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред

 expect(1 + 1).toBe(2) let testsAreEssential = true expect(testAreEssential).toBe(true) 

TOEqual: рджреЛ рдЪрд░, рд╕рд░рдгрд┐рдпреЛрдВ рдпрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рдореВрд▓реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред

 let arr = [1, 2] arr.push(3) expect(arr).toEqual([1, 2, 3]) let x= 1 x++ expect(x).toEqual(2) 

toBeTruthy (toBeFalsy): рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдореВрд▓реНрдп рд╕рд╣реА рд╣реИ (рдпрд╛ рдЧрд▓рдд)ред

 expect(null).toBeFalsy() expect(undefined).toBeFalsy() expect(false).toBeFalsy() expect("Hello world").toBeTruthy() expect({foo: 'bar'}).toBeTruthy() 

.Contain: рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╕рд░рдгреА рдореЗрдВ рдХреЛрдИ рддрддреНрд╡ рд╣реИ рдпрд╛ рдирд╣реАрдВред

 expect(['Apple', 'Banana', 'Strawberry']).toContain('Apple') 

.Throw: рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдлрдВрдХреНрд╢рди рддреНрд░реБрдЯрд┐ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред

 function connect () { throw new ConnectionError() } expect(connect).toThrow(ConnectionError) 

рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг


рдЕрдм рд╣рдо рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдЯреЗрд╕реНрдЯ рд▓рд┐рдЦрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд░рд╣реЗ рд╣реИрдВред рдкрд╣рд▓реЗ рдЕрдкрдиреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ example.spec.js рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ:

 describe('Example', () => { beforeAll(() => { console.log('running before all tests') }) afterAll(() => { console.log('running after all tests') }) beforeEach(() => { console.log('running before each test') }) afterEach(() => { console.log('running after each test') }) it('Should do something', () => { console.log('first test') }) it('Should do something else', () => { console.log('second test') }) }) 

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

рдпрд╛рд░реНрди рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ:

рдЫрд╡рд┐

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

рдЕрдм рд╕рднреА рд╣реБрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдкрд╣рд▓реЗ рдЯреЗрд╕реНрдЯ рдореЗрдВ .skip рдЬреЛрдбрд╝реЗрдВ:

 describe('Example', () => { it.skip('Should do something', () => { console.log('first test') }) it('Should do something else', () => { console.log('second test') }) }) 

рдпрд╛рд░реНрди рдкрд░реАрдХреНрд╖рдг рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдБ:

рдЫрд╡рд┐

рдпрд╣ рдареАрдХ рд╣реИ рдЕрдЧрд░ рдкрд╣рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рддреАрд╕рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

 describe('Example', () => { it('Should do something', () => { console.log('first test') }) it('Should do something else', () => { console.log('second test') }) it.only('Should do that', () => { console.log('third test') }) }) 

рдпрд╛рд░реНрди рдкрд░реАрдХреНрд╖рдг рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдБ :

рдЫрд╡рд┐

рд▓реЗрдЦ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо TDD рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реНрдЯреИрдХ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░реЗрдВрдЧреЗред

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


All Articles