PHP + BDD = рдмреЗрд╣рдЯ, рдпрд╛ рдЪрдорддреНрдХрд╛рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдХрдерд╛

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



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

   рдкрд░рд┐рджреГрд╢реНрдп: рджреЛ рдирдВрдмрд░ рдЬреЛрдбрд╝реЗрдВ 
     рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдореИрдВрдиреЗ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдореЗрдВ 50 рджрд░реНрдЬ рдХрд┐рдП рд╣реИрдВ
       рдФрд░ рдореИрдВрдиреЗ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдореЗрдВ 70 рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ
      рдЬрдм рдореИрдВ рдРрдб рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ
      рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдо рд╕реНрдХреНрд░реА рдкрд░ 120 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП


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



рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд



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



рдореБрдЭреЗ рддреБрд░рдВрдд рдЖрд░рдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП - Behat рдХреЛ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП PHP 5.3.1 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рдЕрднреА рддрдХ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред



рд╕рд╛рдЗрдЯ рдХрд╛ рд▓реЗрдЦрдХ Behat рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдмрд╣реБрдд рдкрд╣рд▓реЗ рдФрд░ рдЖрд╕рд╛рди рдХрд╛ рдЪрдпрди рдХрд░реВрдВрдЧрд╛ - рдирд╛рд╢рдкрд╛рддреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ:

$ pear channel-discover pear.everzet.com

$ pear install everzet/behat-beta







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



 | - рд╕реБрд╡рд┐рдзрд╛рдПрдБ
    `- рдХрджрдо
    |  `- * _steps.php
    `- рд╕рдорд░реНрдерди
        `- env.php




рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдФрд░ рдХреНрдпрд╛ рд╣реИ:



Env.php рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рд░рд┐рдХреНрдд рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рдорд╣рддреНрд╡ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрдЧрд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ рд╣рд░ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдпрд╣рд╛рдВ рд╣реИ рдХрд┐ рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЪрд░ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╡реИрд╕реЗ, рдЙрдирдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП $ рд╡рд░реНрд▓реНрдб рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЬреЛ рдЗрдирдкреБрдЯ рдкрд░ рд╣рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд░ рдмрд╛рд░ рдирдпрд╛ред рдореВрд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреБрдЫ рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ Behat рдФрд░ PHP рд╣реА рд╣рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА PHPUnit рд╕реЗ рд╕рддреНрдпрд╛рдкрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЖрдкрдХреА рдЕрдиреБрдорддрд┐ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░реВрдВрдЧрд╛ред



рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ PHPUnit рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рд╣реА рдирд╛рд╢рдкрд╛рддреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╣реБрдд рд╕рд░рд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

$ pear channel-discover pear.phpunit.de

$ pear channel-discover components.ez.no

$ pear channel-discover pear.symfony-project.com

$ pear install phpunit/PHPUnit







рд╣реЛ рдЧрдпрд╛, рдХреЗрд╡рд▓ env.php рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдирд╛ рд╢реЗрд╖ рд╣реИ:

 <? php
 requirement_once 'PHPUnit / Autoload.php';
 рдЖрд╡рд╢реНрдпрдХрддрд╛_рдСрди 'PHPUnit / рдлреНрд░реЗрдорд╡рд░реНрдХ / Assert / Functions.php';
 ?>


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



 <? php
 requirement_once 'PHPUnit / Autoload.php';
 рдЖрд╡рд╢реНрдпрдХрддрд╛_рдСрди 'PHPUnit / рдлреНрд░реЗрдорд╡рд░реНрдХ / Assert / Functions.php';
 'рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдПрдлрдкреАрдкреА';
 ?>


рд╣рдо рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓рд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХрд░рддреЗ рд╣реИрдВ



рдЦреИрд░, рдпрд╣ рд╕рдм, рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ, рдЖрдк рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдХрдард┐рди рдмрд╛рдд рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рддреЛ, рдлреАрдЪрд░ рдлреЛрд▓реНрдбрд░ рдореЗрдВ calc.feature рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдФрд░ рд▓рд┐рдЦреЗрдВ:



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

     рдкрд░рд┐рджреГрд╢реНрдп:
        рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рд╣реИ
         рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ 30 рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ
          рдФрд░ рдореИрдВрдиреЗ рджреВрд╕рд░реЗ рдирдВрдмрд░ рдХреЗ рд░реВрдк рдореЗрдВ 20 рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ
          рдФрд░ рдореИрдВ 'Add' рджрдмрд╛рддрд╛ рд╣реВрдБ
         рддрдм рдкрд░рд┐рдгрд╛рдо 50 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП




рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХрдорд╛рдВрдб рдХреЛ рд╕реЗрд╡ рдФрд░ рдбреНрд░рд╛рдЗрд╡ рдХрд░реЗрдВ

$ behat features







рдЖрдЙрдЯрдкреБрдЯ рд╣реИ:

 1 рдкрд░рд┐рджреГрд╢реНрдп (1 рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд)
 5 рдЪрд░рдг (5 рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд)
 0.091s

 рдЖрдк рдЗрди рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЪрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 $ рдЪрд░рдг-> рджрд┐рдпрд╛ ('/ ^ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ $ /', рдлрдВрдХреНрд╢рди ($ рджреБрдирд┐рдпрд╛))
     рдирдИ \ Everzet \ Behat \ Exception \ Pending () рдлреЗрдВрдХреЗрдВ;
 });

 $ рдЪрд░рдг-> рдЬрдм ('/ ^ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдирдВрдмрд░ $ /' рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ (\ d +), рдлрд╝рдВрдХреНрд╢рди ($ рджреБрдирд┐рдпрд╛, $ arg1) {
     рдирдИ \ Everzet \ Behat \ Exception \ Pending () рдлреЗрдВрдХреЗрдВ;
 });

 $ рдЪрд░рдг-> рдФрд░ ('/ ^ рдореИрдВрдиреЗ рджреВрд╕рд░реЗ рдирдВрдмрд░ $ /' рдХреЗ рд░реВрдк рдореЗрдВ (\ d +) рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ, рдлрд╝рдВрдХреНрд╢рди ($ рджреБрдирд┐рдпрд╛, $ arg1) {
     рдирдИ \ Everzet \ Behat \ Exception \ Pending () рдлреЗрдВрдХреЗрдВ;
 });

 $ рдХрджрдо-> рдФрд░ ('/ ^ I press \' ([^ \ '] *) \' $ / ', рдлрдВрдХреНрд╢рди ($ рджреБрдирд┐рдпрд╛, $ arg1) {
     рдирдИ \ Everzet \ Behat \ Exception \ Pending () рдлреЗрдВрдХреЗрдВ;
 });

 $ рдЪрд░рдг-> рдлрд┐рд░ ('/ ^ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (\ d +) $ /', рдлрд╝рдВрдХреНрд╢рди ($ рджреБрдирд┐рдпрд╛, $ arn1) {
     рдирдИ \ Everzet \ Behat \ Exception \ Pending () рдлреЗрдВрдХреЗрдВ;
 });


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



 рдХрдХреНрд╖рд╛ Calc {
     рд╕рдВрд░рдХреНрд╖рд┐рдд $ рдкрд╣рд▓реЗ = 0;
     рд╕рдВрд░рдХреНрд╖рд┐рдд $ рд╕реЗрдХрдВрдб = 0;
     рд╕рдВрд░рдХреНрд╖рд┐рдд $ рдкрд░рд┐рдгрд╛рдо = 0;

     рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ setFirst ($ num) {$ рдпрд╣-> рдкрд╣рд▓рд╛ = $ num;  }
     рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдлрд╝рдВрдХреНрд╢рди рд╕реЗрдЯрд╕реЗрдХрдВрдб ($ рд╕рдВрдЦреНрдпрд╛) {$ рдпрд╣-> рджреВрд╕рд░рд╛ = $ рдЕрдВрдХ;  }
     рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ рдЬреЛрдбрд╝ () {$ рдпрд╣-> рдкрд░рд┐рдгрд╛рдо = $ рдпрд╣-> рдкрд╣рд▓рд╛ + $ рдпрд╣-> рджреВрд╕рд░рд╛;  }
     рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдорд╛рд░реЛрд╣ getResult () {$ $ рдЗрд╕-> рдкрд░рд┐рдгрд╛рдо;  }
 }


рд╣рдо рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред



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

 <? php
 $ рдЪрд░рдг-> рджрд┐рдпрд╛ ('/ ^ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ $ /', рдлрдВрдХреНрд╢рди ($ рджреБрдирд┐рдпрд╛))
     $ рджреБрдирд┐рдпрд╛-> рдХреИрд▓реНрдХ = рдирдпрд╛ рдХреИрд▓реНрдХ ();
 });
 $ рдЪрд░рдг-> рдЬрдм ('/ ^ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдирдВрдмрд░ $ /' рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ (\ d +), рдлрд╝рдВрдХреНрд╢рди ($ рджреБрдирд┐рдпрд╛, $ рдЕрдВрдХ) {
     $ рджреБрдирд┐рдпрд╛-> calc-> setFirst ($ num);
 });
 $ рдЪрд░рдг-> рдЬрдм ('/ ^ рдореИрдВрдиреЗ рджреВрд╕рд░реЗ рдирдВрдмрд░ $ /' рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ рд╣реИ (\ d +), рдлрд╝рдВрдХреНрд╢рди ($ рджреБрдирд┐рдпрд╛, $ рдЕрдВрдХ) {
     $ рджреБрдирд┐рдпрд╛-> calc-> setSecond ($ num);
 });
 $ рдЪрд░рдг-> рдХрдм ('/ ^ I' \ Add '' $ / ', рдлрдВрдХреНрд╢рди ($ рджреБрдирд┐рдпрд╛)) {
     $ рджреБрдирд┐рдпрд╛-> рдХреИрд▓реНрдХ-> рдЬреЛрдбрд╝ ();
 });
 $ рдХрджрдо-> рдлрд┐рд░ ('/ ^ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (\ d +) $ /', рдлрд╝рдВрдХреНрд╢рди ($ рджреБрдирд┐рдпрд╛, $ рд░реЗ) {
     assertEquals ($ res, $ world-> calc-> getResult ());
 });
 ?>


рд╣рдо рдлрд┐рд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ - рд╡реЙрдЗрд▓рд╛! рдЯреЗрд╕реНрдЯ рдкрд╛рд╕ рдХрд┐рдпрд╛ :)



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

   рдкрд░рд┐рджреГрд╢реНрдп: # рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ / calc.feature: 6
     рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ # рд╕реБрд╡рд┐рдзрд╛рдПрдБ / рдЪрд░рдг / calc_steps.php: 5 рд╣реИ
     рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рд╕рдВрдЦреНрдпрд╛ # рд╕реБрд╡рд┐рдзрд╛рдУрдВ / рдЪрд░рдгреЛрдВ / calc_steps.php: 9 рдХреЗ рд░реВрдк рдореЗрдВ 30 рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ
     рдФрд░ рдореИрдВрдиреЗ рджреВрд╕рд░реЗ рдирдВрдмрд░ # рдлреАрдЪрд░реНрд╕ / рд╕реНрдЯреЗрдкреНрд╕ / calc_steps.php: 13 рдХреЗ рд░реВрдк рдореЗрдВ 20 рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ
     рдФрд░ рдореИрдВ 'Add' # рдлреАрдЪрд░реНрд╕ / рд╕реНрдЯреЗрдкреНрд╕ / calc_steps.php: 17 рджрдмрд╛рддрд╛ рд╣реВрдВ
     рддрдм рдкрд░рд┐рдгрд╛рдо 50 # рд╕реБрд╡рд┐рдзрд╛рдУрдВ / рдЪрд░рдгреЛрдВ / calc_steps.php: 21 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

 1 рдкрд░рд┐рджреГрд╢реНрдп (1 рдкрд╛рд░рд┐рдд)
 5 рдЪрд░рдг (5 рдкрд╛рд░рд┐рдд)
 0.114s


рдкреГрд╖реНрда рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред



рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЧреНрд░рд╛рд╣рдХ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдорд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдПрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ (рдЙрдирдХреА рд░рд╛рдп рдореЗрдВ) рдЖрд╡реЗрджрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ - рдЙрд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдм рд╣рдо рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдХрд╛ рд╕рддреНрдпрд╛рдкрдиред рд░реВрдмреА рдСрди рд░реЗрд▓реНрд╕ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рдХрдХрдбрд╝реА + рд╡реАрдмреНрд░реИрдЯ + рдиреЛрдХреЛрдЧрд┐рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред PHP рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛ ... рдХрднреА-рдХрднреА рдЗрд╕рдХреЗ рдкреГрд╖реНрда рдкрд░ рд╣реА рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд┐рдореНрдлрдиреА 2 рдкрд░ рдЖрдзрд╛рд░рд┐рдд Goutte рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреВрд░реНрд╡реЛрдХреНрдд рдмрдВрдбрд▓ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ рдмрд╣реБрдд рд╣реАрди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЦреЛрдЬрдирд╛ рдмреЗрд╣рддрд░ рдерд╛ (рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ)ред , рдХреГрдкрдпрд╛, рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ)ред Goutte рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рдЖрд╕рд╛рди рд╣реИ - рдлрд╝рд╛рд░ рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ env.php рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред



рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреГрд╖реНрда рдХреЛ рд╕реНрдХреЗрдЪ рдХрд┐рдпрд╛:

 <! DOCTYPE html>
 <Html>
     <Head>
     </ Head>
     <Body>
         <div> <?
             рдЕрдЧрд░ ($ _GET ["рд╕рдмрдорд┐рдЯ"]) {
                 рдЧреВрдВрдЬ "рдкрд╛рда ="ред  $ _GET ['рдЯреЗрдХреНрд╕реНрдЯрдлреАрд▓реНрдб']ред  "<br />";
                 рдЗрдХреЛ "рдЪреЗрдХрдмреЙрдХреНрд╕ ="ред  $ _GET ['рдЪреЗрдХрдмреЙрдХреНрд╕']ред  "<br />";
                 рдЗрдХреЛ "рд░реЗрдбрд┐рдпреЛ ="ред  $ _GET ['рд░реЗрдбрд┐рдпреЛ']ред  "<br />";
                 рдЧреВрдВрдЬ "рдЪрдпрди ="ред  $ _GET ['рдЪрдпрди рдмреЙрдХреНрд╕']ред  "<br />";
             }
         ?> </ div>
         <form method = "get" action = "behat.php">
             <Div>
                 <input type = "text" name = "textfield" value = "">
             </ Div>
             <Div>
                 <рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ = "рдЪреЗрдХрдмреЙрдХреНрд╕" рдирд╛рдо = "рдЪреЗрдХрдмреЙрдХреНрд╕" рдорд╛рди = "рдЪреЗрдХрдмреЙрдХреНрд╕">
             </ Div>
             <Div>
                 <рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ = "рд░реЗрдбрд┐рдпреЛ" рдирд╛рдо = "рд░реЗрдбрд┐рдпреЛ" рдорд╛рди = "рд░реЗрдбрд┐рдпреЛ 1" рдЬрд╛рдБрдЪ = "рдЬрд╛рдБрдЪ">
                 <рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ = "рд░реЗрдбрд┐рдпреЛ" рдирд╛рдо = "рд░реЗрдбрд┐рдпреЛ" рдорд╛рди = "рд░реЗрдбрд┐рдпреЛ 2">
                 <рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ = "рд░реЗрдбрд┐рдпреЛ" рдирд╛рдо = "рд░реЗрдбрд┐рдпреЛ" рдореВрд▓реНрдп = "рд░реЗрдбрд┐рдпреЛ 3">
             </ Div>
             <Div>
                 <select name = "selectbox">
                     <рд╡рд┐рдХрд▓реНрдк рдорд╛рди = "рд╡рд┐рдХрд▓реНрдк 1" рдЪрдпрдирд┐рдд = "рдЪрдпрдирд┐рдд"> рд╡рд┐рдХрд▓реНрдк 1 </ рд╡рд┐рдХрд▓реНрдк>
                     <рд╡рд┐рдХрд▓реНрдк рдорд╛рди = "рд╡рд┐рдХрд▓реНрдк 2"> рд╡рд┐рдХрд▓реНрдк 2 </ рд╡рд┐рдХрд▓реНрдк>
                     <рд╡рд┐рдХрд▓реНрдк рдорд╛рди = "рд╡рд┐рдХрд▓реНрдк 3"> рд╡рд┐рдХрд▓реНрдк 3 </ рд╡рд┐рдХрд▓реНрдк>
                 </ рдЪрдпрди рдХрд░реЗрдВ>
             </ Div>
             <Div>
                 <рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ = "рд╕рдмрдорд┐рдЯ" рдирд╛рдо = "рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ" рдореВрд▓реНрдп = "рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ">
             </ Div>
             <div id = "linkdiv">
                 <a href="behat.php?textfield=text&checkbox=checkbox&radio=radio3&selectbox=option2&submit=Submit"> рдореБрдЭреЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ </a>
             </ Div>
         </ рдлрд╛рд░реНрдо>
     </ Body>
 </ Html>


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

 рдлрд╝реАрдЪрд░: рдкрд░реАрдХреНрд╖рдг
     рдлреЙрд░реНрдо рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдлреАрд▓реНрдб рдХреЗ рд╕рднреА рдорд╛рди
     рдкреГрд╖реНрда рдХреЗ рд╢реАрд░реНрд╖ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

     рдкрд░рд┐рджреГрд╢реНрдп: рдлрд╝реАрд▓реНрдб рднрд░реЗрдВ
         рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдкреГрд╖реНрда рдкрд░ рд╣реВрдВ
          рдЬрдм рдореИрдВ 'рдХреБрдЫ рдкрд╛рда' рдХреЗ рд╕рд╛рде 'рдЯреЗрдХреНрд╕реНрдЯрдлреАрд▓реНрдб' рдХреЛ 'рд╕рдмрдорд┐рдЯ' рдХреЗ рд░реВрдк рдореЗрдВ рднрд░рддрд╛ рд╣реВрдВ
           рдФрд░ рдореИрдВ 'рд╕рдмрдорд┐рдЯ' рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд░рддрд╛ рд╣реВрдВ
          рддрдм рдореБрдЭреЗ 'рдкрд╛рда = рдХреБрдЫ рдкрд╛рда' рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП

     рдкрд░рд┐рджреГрд╢реНрдп: рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
         рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдкреГрд╖реНрда рдкрд░ рд╣реВрдВ
          рдЬрдм рдореИрдВ 'рд╕рдмрдорд┐рдЯ' рдХреЗ рд░реВрдк рдореЗрдВ рдЪреЗрдХрдмреЙрдХреНрд╕ 'рдЪреЗрдХрдмреЙрдХреНрд╕' рдкрд░ рдЯрд┐рдХ рдХрд░рддрд╛ рд╣реВрдБ
           рдФрд░ рдореИрдВ 'рд╕рдмрдорд┐рдЯ' рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд░рддрд╛ рд╣реВрдВ
          рдлрд┐рд░ рдореБрдЭреЗ 'рдЪреЗрдХрдмреЙрдХреНрд╕ = рдЪреЗрдХрдмреЙрдХреНрд╕' рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП

     рдкрд░рд┐рджреГрд╢реНрдп: рд░реЗрдбрд┐рдпреЛ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛
         рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдкреГрд╖реНрда рдкрд░ рд╣реВрдВ
          рдЬрдм рдореИрдВ 'рд░реЗрдбрд┐рдпреЛ 2' рдХрд╛ рдЪрдпрди рд░реЗрдбрд┐рдпреЛ 'рд░реЗрдбрд┐рдпреЛ' рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддрд╛ рд╣реВрдВ
           рдФрд░ рдореИрдВ 'рд╕рдмрдорд┐рдЯ' рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд░рддрд╛ рд╣реВрдВ
          рдлрд┐рд░ рдореБрдЭреЗ 'рд░реЗрдбрд┐рдпреЛ = рд░реЗрдбрд┐рдпреЛ 2' рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП
          рдлрд┐рд░ рдореБрдЭреЗ 'рд░реЗрдбрд┐рдпреЛ = рд░реЗрдбрд┐рдпреЛ 1' рдирд╣реАрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП

     рдкрд░рд┐рджреГрд╢реНрдп: рдЪрдпрди рдмреЙрдХреНрд╕ рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЪрдпрди
         рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдкреГрд╖реНрда рдкрд░ рд╣реВрдВ
          рдЬрдм рдореИрдВ 'рдСрдкреНрд╢рди 3' рдХреЛ 'рд╕реЗрд▓реЗрдХреНрдЯ рдмреЙрдХреНрд╕' рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирддрд╛ рд╣реВрдБ
           рдФрд░ рдореИрдВ 'рд╕рдмрдорд┐рдЯ' рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд░рддрд╛ рд╣реВрдВ
          рдлрд┐рд░ рдореБрдЭреЗ 'Select = рд╡рд┐рдХрд▓реНрдк 3' рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП
          рддрдм рдореБрдЭреЗ 'Select = рд╡рд┐рдХрд▓реНрдк 1' рдирд╣реАрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП

     рдкрд░рд┐рджреГрд╢реНрдп: рдХреБрдЫ рдлрд╝реАрд▓реНрдб рднрд░реЗрдВ
         рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдкреГрд╖реНрда рдкрд░ рд╣реВрдВ
          рдЬрдм рдореИрдВ рдлреЙрд░реНрдо 'рд╕рдмреНрдорд┐рдЯ' рднрд░рддрд╛ рд╣реВрдВ:
             |  рдЯреЗрдХреНрд╕реНрдЯрдлреАрд▓реНрдб |  рдХреБрдЫ рдкрд╛рда |
             |  рдЪреЗрдХрдмреЙрдХреНрд╕ |  рд╕рдЪ |
             |  рд░реЗрдбрд┐рдпреЛ |  рд░реЗрдбрд┐рдпреЛ 3 |
             |  рдЪрдпрди рдмреЙрдХреНрд╕ |  рд╡рд┐рдХрд▓реНрдк 2 |
           рдФрд░ рдореИрдВ 'рд╕рдмрдорд┐рдЯ' рдлреЙрд░реНрдо рдЬрдорд╛ рдХрд░рддрд╛ рд╣реВрдВ
          рддрдм рдореБрдЭреЗ 'рдкрд╛рда = рдХреБрдЫ рдкрд╛рда' рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП
           рдФрд░ рдореБрдЭреЗ 'рдЪреЗрдХрдмреЙрдХреНрд╕ = рдЪреЗрдХрдмреЙрдХреНрд╕' рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП
           рдФрд░ рдореБрдЭреЗ 'рд░реЗрдбрд┐рдпреЛ = рд░реЗрдбрд┐рдпреЛ 3' рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП
           рдФрд░ рдореБрдЭреЗ 'div' рдХреЗ рднреАрддрд░ 'Select = option2' рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП

     рдкрд░рд┐рджреГрд╢реНрдп: рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛
         рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдкреГрд╖реНрда рдкрд░ рд╣реВрдВ
          рдЬрдм рдореИрдВ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ 'рдореБрдЭреЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ'
          рдлрд┐рд░ рдореБрдЭреЗ 'рдкрд╛рда = рдкрд╛рда' рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП
           рдФрд░ рдореБрдЭреЗ 'рдЪреЗрдХрдмреЙрдХреНрд╕ = рдЪреЗрдХрдмреЙрдХреНрд╕' рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП
           рдФрд░ рдореБрдЭреЗ 'рд░реЗрдбрд┐рдпреЛ = рд░реЗрдбрд┐рдпреЛ 3' рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП
           рдФрд░ рдореБрдЭреЗ 'div' рдХреЗ рднреАрддрд░ 'Select = option2' рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП
           рдФрд░ рдлрд╛рд░реНрдо 'рд╕рдмрдорд┐рдЯ' рдореЗрдВ 'рдЯреЗрдХреНрд╕реНрдЯрдлреАрд▓реНрдб' рдлрд╝реАрд▓реНрдб рд░рд┐рдХреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП




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



рдХрдИ рдХрджрдо рд╣реИрдВ, рдХрджрдо рдЕрд▓рдЧ рд╣реИрдВ, рдФрд░ рд╣рд░ рдХреЛрдИ рдЧрд╛рдЙрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЗрди рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА git: //github.com/DarthSim/behat_websteps.git рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдПрдХ рдХреЛ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рднрдВрдбрд╛рд░ рдореЗрдВ рдЖрдк рдкрд╛рдПрдВрдЧреЗ:



рд╣рдо рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВред рдФрд░ рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ ...



Unknown path 'test page'. You can define it in [features_folder]/support/paths.php







рддреНрд░реБрдЯрд┐ рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддреА рд╣реИ - рдкрд░реАрдХреНрд╖рдг рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдкрд░реАрдХреНрд╖рдг рдкреГрд╖реНрда" рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдлрд┐рдХреНрд╕ рд╕реБрд╡рд┐рдзрд╛рдУрдВ / рд╕рдорд░реНрдерди / paths.php рдлрд╝рд╛рдЗрд▓ рдореЗрдВ "рдкрд░реАрдХреНрд╖рдг рдкреГрд╖реНрда" рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдкрде рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдкреГрд╖реНрда test.dev/behat.php рдкрд░ рд╕реНрдерд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрде рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛



$world->paths['test page'] = "http://tests.dev/behat.php";







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



рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ



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



рдЧрд┐рддреБрдм рдкрд░ рдмреЗрд╣реЛрд╢ рднрдВрдбрд╛рд░

рдмреЗрд╣рдЯ WIKI

рдмреЗрд╣рдЯ рдПрдкреАрдЖрдИ

рдЧрд╛рдЙрдЯ рднрдВрдбрд╛рд░

рд╕рд┐рдореНрдлрдиреА 2 рдПрдкреАрдЖрдИ (рдЧрд╛рдЙрдЯ рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рддрд╛ рд╣реИ)



All Articles