рдореИрдВ рдПрдХ рдЫреЛрдЯреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рддрд╛ рд╣реВрдБред рдореБрдЭреЗ рд╣реЛрдЯрд▓ рдХреЗ рдХрдорд░реЗ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХрд╛рдо рдерд╛, рдореИрдВ рдЕрдкрдиреЗ рд╕рднреА рдкрд╕рдВрджреАрджрд╛
рдкреИрдХрдЧрд┐рд╕реНрдЯ рдкрд░ рдЪрдврд╝ рдЧрдпрд╛, рдПрдХ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдФрд░, рдореЗрд░реА рдЧрд╣рд░реА рдирд┐рд░рд╛рд╢рд╛ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдареАрдХ рд╣реИ, рд╣рдореЗрдВ рдпрд╣ рдХрд░рдирд╛ рд╣реИ - рд╣рдо рдЗрд╕реЗ рдХрд░реЗрдВрдЧреЗред рдХреЛрдб рд▓рд┐рдЦрд╛ рд╣реИ, рдЖрд╡реЗрджрди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреБрдЫ рд╣рдлрд╝реНрддреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЧреАрдердм рдкрд░ рдПрдХ рд▓рд┐рдЦрд┐рдд рдмрдВрдбрд▓ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдпрд╣ рд╕рд╡рд╛рд▓ рдЖрдпрд╛: рдПрдХ рдЕрд▓рдЧ рдмрдВрдбрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрд╡реЗрджрди рд╣реА рдирд╣реАрдВ рд╣реИред рдЙрд╕рдиреЗ рдЧреВрдЧрд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рдХреБрдЫ рднреА рд╕рд╛рд░реНрдердХ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореБрдЭреЗ рдереЛрдбрд╝реА-рдереЛрдбрд╝реА рдХрд░рдХреЗ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреА рдереА, рдФрд░ рдЕрдм рдореИрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рдЖрдкрдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ
рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рд╣рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡рд╣ рд╣реИ рд╣рдорд╛рд░реЗ рдмрдВрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рднрдВрдбрд╛рд░ рдмрдирд╛рдирд╛ рдФрд░ рдЙрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ред рд╣рдорд╛рд░реЗ рдмрдВрдбрд▓, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
рд╕рдВрдЧреАрддрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИред рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
$ composer init #
рд╣рдордиреЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рд╣реИред
composer.json
рдлрд╝рд╛рдЗрд▓ рдХреЛ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдХрдИ рдЦрдВрдб рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВ:
require
,
require-dev
,
suggest
ред рдЖрдЗрдП рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ:
require
рдХреБрдЫ рдРрд╕реА рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреАrequire-dev
рд╡рд╣ рд╣реИ рдЬреЛ рд╣рдо рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВsuggest
- рдпрд╣рд╛рдВ рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдмрдВрдбрд▓ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рди рдХреЗрд╡рд▓ ORM рдХреЗ рд╕рд╛рде, рдмрд▓реНрдХрд┐ ODM рдХреЗ рд╕рд╛рде рднреА
рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
$ composer install
рдареАрдХ рд╣реИ, рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рдеред
рдХреЛрд░
рдкрд░реАрдХреНрд╖рдг рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд▓рдЧрднрдЧ рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреНрд▓рд╛рд╕ рдСрдЯреЛрд▓реИрдб
рд╣рдореЗрдВ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА
bootstrap.php
.php рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ phpunit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
<?php use Doctrine\Common\Annotations\AnnotationRegistry;
рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдореИрдВ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рд░реЗрдЦрд╛ рдХреА рдУрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
ред рдореЗрд░рд╛ рдмрдВрдбрд▓ рдбреЙрдХреНрдЯреНрд░рд┐рди рдФрд░ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдЖрд╢реНрдЪрд░реНрдп рдерд╛ рдЬрдм рдореБрдЭреЗ рдмрд╛рд░-рдмрд╛рд░ "рдПрдиреЛрдЯреЗрд╢рди рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛" рдкрд╛рда рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдкрд╡рд╛рдж рдорд┐рд▓рд╛ред
рд╣рдорд╛рд░реЗ
phpunit.xml.dist
рдЦреЛрд▓реЗрдВ рдФрд░ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░рд╛
bootstrap.php
phpunit.xml.dist
рдХрд╣рд╛рдВ рд╣реИ
<phpunit bootstrap="./Tests/bootstrap.php">
AppKernel рдФрд░ рдХрдВрд╕реЛрд▓
рдЕрдЧрд▓рд╛ рдХрджрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реИред рдореИрдВрдиреЗ
Tests/fixtures
рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдпрд╛ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╛рдЗрд▓реЗрдВ рдЭреВрда рд╣реЛрдВрдЧреАред рдХрд┐рд╕реА рднреА
AppKernel
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдореБрдЦреНрдп рд╡рд░реНрдЧ
AppKernel
, рдЗрд╕реЗ
Tests/fixtures/app
рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдмрдирд╛рдПрдВ
<?php use Symfony\Component\HttpKernel\Kernel; use Symfony\Component\Config\Loader\LoaderInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\HttpKernelInterface; class AppKernel extends Kernel { public function registerBundles() { $bundles = array(
рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдлрд╝рд╛рдЗрд▓
Tests/fixtures/app/config/config.yml
рдмрдирд╛рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдХрдВрд╕реЛрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдмрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ
Tests/fixtures/app/console
рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ:
рдЕрдм рд╣рдо рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХрд╛ рдореВрд▓ рдХрд╣рд╛рдВ рд╕реНрдерд┐рдд рд╣реИ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджреЗрд╢
phpunit.xml.dist
:
<php> <server name="KERNEL_DIR" value="Tests/Fixtures/app/" /> </php>
рдЗрди рд╕рд░рд▓ рдЬреЛрдбрд╝рддреЛрдбрд╝реЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдЕрдкрдирд╛ рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдФрд░
Symfony\Bundle\FrameworkBundle\Test\WebTestCase
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдорд╛рд░реНрдЧ рдкреНрд░рд╢рд╕реНрдд рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рд╕рд┐рдореНрдлрдиреА 2 рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдкрдиреА рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдЕрдзрд┐рдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреВрд░рд╛ рдХреЛрдб
рдпрд╣рд╛рдВ рдкрдврд╝реЗрдВ
рдкреБрдирд╢реНрдЪ: рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЕрдкрдиреЗ рдмрдВрдбрд▓реЛрдВ рдореЗрдВ рдбреЙрдХреНрдЯреНрд░рд┐рди рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ред