
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА
рд╣рдмреЗ рдкрд░
рдХреЛрдбреЗрдкреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рд▓рд┐рдЦрд╛ рдерд╛ - PHP рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ред рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдХрднреА рднреА рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрд╣рд┐рддрд╛ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреА рдЪрд╛рд╣рд┐рдПред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рджрд┐рдирдЪрд░реНрдпрд╛ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред
рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреНрдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреА рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХреБрдЫ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рднреА рджрд┐рдП рд╣реИрдВред
рд╕рдВрдЧреАрддрдХрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрдирд╛
рдЕрдм рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ PEAR рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЙрд╕рдХреЗ рд╕рд╛рде рдЕрдХреНрд╕рд░ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рддрдорд╛рд╢рдмреАрди рдФрд░ рдЫрд╛рдпрд╛рд╡рд╛рджреА рдЧреАрдд рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдПрдХ рдЖрдзреБрдирд┐рдХ рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВ рдФрд░ рдкреНрд░рд╛рдЪреАрди рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЗ рд╕рднреА рдЕрдиреБрд╖реНрдард╛рдиреЛрдВ рдХреЛ рднреВрд▓ рдЧрдП рд╣реИрдВ, рддреЛ рд╕рдВрдЧреАрддрдХрд╛рд░ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рд╕рд╛рде, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЛрдбреИрдкреНрд╢рди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдорд┐рдВрдХ рдФрд░ рдкреАрдПрдЪрдкреАрдпреВрдиреЗрдЯ рд╕рд╣рд┐рдд рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдБ рдирд┐рд░реНрджреЗрд╢ред
рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдорд░реНрдерди
рдЕрдм рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
Symfony2, Zend рдлреНрд░реЗрдорд╡рд░реНрдХ, рд╕рд┐рдореНрдлрдиреА, рдХреЛрд╣рдирд╛, рд╕реЛрд╢рд▓рдПрдВрдЧрдЗрди ред рд╡реИрд╕реЗ, рдкрд┐рдЫрд▓реЗ рджреЛ рдореЙрдбреНрдпреВрд▓, рддреГрддреАрдп-рдкрдХреНрд╖ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдереЗ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рджред рдЙрдирдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╕рдВрджреАрджрд╛ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдкреНрд░рд▓реЗрдЦрди рдкреАрдврд╝реА
рдХрдИ рд▓реЛрдЧ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИрдВред рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдг рд╣рдореЗрд╢рд╛ рдкрдврд╝рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╕рдВрд╣рд┐рддрд╛ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЕрд▓рдЧ рд╣реИ, Cest рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЖрдк рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред
$I->testMethod('\Service\Group::create'); $I->wantTo('create a group'); $I->executeTestedMethodWith('DemoGroup', 1) ->seeInRepository('Model\Group', array('name' => 'DemoGroup', 'user_id' => 1, 'type' => 'group')) ->seeResultIs('int');
рдпрджрд┐ рдЖрдк phpDocumentor2 рдкреНрд░рд▓реЗрдЦрди рдкреАрдврд╝реА рдкреНрд░рдгрд╛рд▓реА (рдкреВрд░реНрд╡ DocBlox) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб-рдЗрди рдмрд┐рд▓реНрдЯ рдЗрди рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╡рд┐рдзрд┐ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реЗ рдкрд╛рда рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдирд┐рдореНрди рд░реВрдк рд▓реЗрдЧрд╛:
рдЗрд╕ рд╡рд┐рдзрд┐ рд╕реЗ рдореИрдВ рд╕рдореВрд╣ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдБ
рдЕрдЧрд░ рдореИрдВ \ Service \ Group рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ: рддреЛ рдмрдирд╛рдПрдВ ("рдбреЗрдореЛрдЧреНрд░реБрдк", 1)
рдореИрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА "рдореЙрдбрд▓ \ рдЧреНрд░реБрдк", {"рдирд╛рдо": "рдбреЗрдореЛрдЧреНрд░реБрдк", "рдпреВрдЬрд░_рдб": 1, "рдЯрд╛рдЗрдк": "рдЧреНрд░реБрдк"} рдореЗрдВ рджреЗрдЦреВрдВрдЧрд╛
рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдкрд░рд┐рдгрд╛рдо "int" рд╣реИ
рдЕрдм рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреА рдХрд┐ рдпрд╣ рдпрд╛ рд╡рд╣ рддрд░реАрдХрд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред рдкреНрд▓рдЧрдЗрди рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ -
рдпрд╣рд╛рдВ рдкрдврд╝реЗрдВред
CI рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рдорд░реНрдерди
рдХреЛрдбрдХреЗрд╢рди рдХреЛ рдЕрдм рдЬреЗрдирдХрд┐рдВрд╕ рдФрд░ рдмрд╛рдВрд╕ рдЬреИрд╕реЗ рдХреЙрдиреНрдЯреАрдиреНрдпреВрдЕрд╕ рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдЕрдм рддрдХ рдХреЗрд╡рд▓ рдмрд╛рдВрд╕ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реИред рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо XML рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЕрдиреНрдп CI рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдард╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЙрдирдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрдВрдЧреА - рддреЛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ, рд╣рдо рдЬрд▓реНрджреА рд╕реЗ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗред
рдпрд╣ рд╕рдм, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрдИ рдЕрдиреНрдп рдЙрдкрд╣рд╛рд░ рднреА,
рдХреЛрдб 1.0 рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред
рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ , рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдФрд░ рдЕрдм рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм:
рдЕрдЧрд░ PHPUnit рд╣реИ рддреЛ рдХреЛрдб рд░рд┐рд╕реЗрдкреНрд╢рди рдХреНрдпреЛрдВ?
рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рд░рд╣рд╕реНрдп рдмрддрд╛рдКрдВрдЧрд╛: рд╕рдВрд╣рд┐рддрд╛ рдПрдХ рдмрд╛рдЗрдХ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ PHPUnit рдХреЗ рд▓рд┐рдП рдПрдХ рдРрдб-рдСрди рд╣реИред рдпрд╣ рдЖрдкрдХреЛ PHPUnit рдЗрдВрдЬрди рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, PHPUnit Codeception рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд╕рднреА рдореМрдЬреВрджрд╛ рдкрд░реАрдХреНрд╖рдг рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдкрдХрдбрд╝ рд╕рдХреЗрдВрдЧреЗред рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдирдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдФрд░ рд╕реНрд╡реАрдХреГрддрд┐ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдХреЛрдбреЗрдкреНрд╢рди рдореЗрдВ рдмреИрд╕рд╛рдЦреА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реЗ рдХрдИ рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рд╣реА рд╣рд▓ рдХрд┐рдП рдЬрд╛ рдЪреБрдХреЗ рд╣реИрдВред
рдпрджрд┐ рд╕реЗрд▓реЗрдирд┐рдпрдо рд╣реИ рддреЛ рдХреЛрдбреЗрдкреНрд╢рди рдХреНрдпреЛрдВ?
рдХреЛрдбрд▓реЗрдирд┐рдпрдо рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рдВрд╣рд┐рддрд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдП рд░рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд╡реЗ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрд╕рдХреЗ Goutte рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рд╕реАрдзреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрдХ рдкрд╣реБрдВрдЪреЗрдВред рдпрд╣ рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрдбреЗрдкреНрд╢рди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдлрд╛рдИ рдбреЗрдЯрд╛ рд╕реЗ рдЬреБрдбрд╝реА рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддрд╛ рд╣реИред
рдЕрдЧрд░ рдПрдХ Behat рд╣реИ рддреЛ рдХреЛрдбреЗрд╕реЗрдкреНрд╢рди рдХреНрдпреЛрдВ?
рд╢реИрд▓реА рдореЗрдВ рдкреНрд░рд╢реНрди: рдХреНрдпреЛрдВ рд▓рд┐рдирдХреНрд╕, рдЕрдЧрд░ рд╡рд┐рдВрдбреЛрдЬ рд╣реИред рд╡рд┐рдХрд▓реНрдк рд░рдЦрдирд╛ рд╣рдореЗрд╢рд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо, рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдЬреЛ рдЖрдкрдХреЛ PHP рдореЗрдВ рд╕реНрд╡реАрдХреГрддрд┐ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХ рддрдВрддреНрд░ рдореЗрдВ рд╢рд╛рдирджрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧреАред
рднрд╡рд┐рд╖реНрдп рдХреА рдпреЛрдЬрдирд╛
рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдХреЛрдб рдХрд╡рд░реЗрдЬ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рдорд░реНрдерд┐рдд рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВред рдЖрдк рдХреНрдпрд╛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ?