CakePHP - Manual/CommonTasks/Testing/TestingComponents /wiki/Manual/CommonTasks/Testing/TestingComponents History/revisions of CakePHP/Manual/CommonTasks/Testing/TestingComponents en-us 2009-04-30 18:30:42 /wiki/Manual/CommonTasks/Testing/TestingComponents/show?time=2009-04-30+18%3A30%3A42 <div class="pageBefore"><img src="/wiki_/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" /></div><div class="page"> <b>Сравнение версий <a name=".manual.commontasks.testing.testingcomponents" href="/wiki/Manual/CommonTasks/Testing/TestingComponents" class="">/Manual&nbsp;/&nbsp;Common&nbsp;Tasks&nbsp;/&nbsp;Testing&nbsp;/&nbsp;Testing&nbsp;Components</a> за <a href="/wiki/Manual/CommonTasks/Testing/TestingComponents?time=2009-04-30+18%3A30%3A42">2009-04-30 18:30:42</a> и <a href="/wiki/Manual/CommonTasks/Testing/TestingComponents">2009-05-03 17:23:21</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Допустим, мы&nbsp;хотим протестировать компонент <!--notypo-->TransporterComponent<!--/notypo-->, который использует модель Transporter для&nbsp;предоставления функциональности для&nbsp;других контроллеров. Мы&nbsp;будем использовать четыре файла:<br /> <ul><li> Компонент Transporters, расположен в&nbsp;app/controllers/components/transporter.php </li><li> Модель Transporter в&nbsp;app/models/transporter.php </li><li> Прикрипление <!--notypo-->TransporterTestFixture<!--/notypo--> в&nbsp;app/tests/fixtures/transporter_fixture.php </li><li> Код&nbsp;теста в&nbsp;in app/tests/cases/transporter.test.php </li></ul><div class="indent"></div> <hr noshade="noshade" size="1" /><a name="h904-1"></a><h3>Инициализирование компонента </h3> Поскольку <!--notypo-->CakePHP<!--/notypo--> не&nbsp;позволяет импортировать модели непосредственно в&nbsp;компоненты, то&nbsp;нам понадобится контроллер для&nbsp;доступа к&nbsp;данным модели.<br /> Если функция startup() компонента выглядит так:<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?<br /></span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">startup</span><span style="color: #007700">(&amp;</span><span style="color: #0000BB">$controller</span><span style="color: #007700">){&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">Transporter&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$controller</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">Transporter</span><span style="color: #007700">;&nbsp;&nbsp;<br />&nbsp;}<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> тогда мы&nbsp;можем просто создать фиктивный класс:<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">FakeTransporterController&nbsp;</span><span style="color: #007700">{}&nbsp;<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> и&nbsp;определить значения таким образом:<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?<br />$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">TransporterComponentTest&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TransporterComponent</span><span style="color: #007700">();&nbsp;<br /></span><span style="color: #0000BB">$controller&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">FakeTransporterController</span><span style="color: #007700">();&nbsp;<br /></span><span style="color: #0000BB">$controller</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">Transporter&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TransporterTest</span><span style="color: #007700">();&nbsp;<br /></span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">TransporterComponentTest</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">startup</span><span style="color: #007700">(&amp;</span><span style="color: #0000BB">$controller</span><span style="color: #007700">);&nbsp;<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> <hr noshade="noshade" size="1" /><a name="h904-2"></a><h3>Создание тестирующего метода</h3> Просто создадим класс, который расширяет <!--notypo-->CakeTestCase<!--/notypo--> и&nbsp;начнем писать тесты.<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">TransporterTestCase&nbsp;</span><span style="color: #007700">extends&nbsp;</span><span style="color: #0000BB">CakeTestCase&nbsp;</span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">$fixtures&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">'transporter'</span><span style="color: #007700">);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">testGetTransporter</span><span style="color: #007700">()&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">TransporterComponentTest&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TransporterComponent</span><span style="color: #007700">();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$controller&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">FakeTransporterController</span><span style="color: #007700">();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$controller</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">Transporter&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TransporterTest</span><span style="color: #007700">();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">TransporterComponentTest</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">startup</span><span style="color: #007700">(&amp;</span><span style="color: #0000BB">$controller</span><span style="color: #007700">);&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$result&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">TransporterComponentTest</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTransporter</span><span style="color: #007700">(</span><span style="color: #DD0000">"12345"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"Швеция"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"54321"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"Швеция"</span><span style="color: #007700">);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assertEqual</span><span style="color: #007700">(</span><span style="color: #0000BB">$result</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"SP&nbsp;наилучший&nbsp;для&nbsp;1xxxx-5xxxx"</span><span style="color: #007700">);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$result&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">TransporterComponentTest</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTransporter</span><span style="color: #007700">(</span><span style="color: #DD0000">"41234"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"Швеция"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"44321"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"Швеция"</span><span style="color: #007700">);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assertEqual</span><span style="color: #007700">(</span><span style="color: #0000BB">$result</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"WSTS&nbsp;наилучший&nbsp;для&nbsp;41xxx-44xxx"</span><span style="color: #007700">);&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$result&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">TransporterComponentTest</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTransporter</span><span style="color: #007700">(</span><span style="color: #DD0000">"41001"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"Швеция"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"41870"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"Швеция"</span><span style="color: #007700">);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assertEqual</span><span style="color: #007700">(</span><span style="color: #0000BB">$result</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">3</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"GL&nbsp;наилучший&nbsp;для&nbsp;410xx-419xx"</span><span style="color: #007700">);&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$result&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">TransporterComponentTest</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTransporter</span><span style="color: #007700">(</span><span style="color: #DD0000">"12345"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"Швеция"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"54321"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"Норвегия"</span><span style="color: #007700">);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assertEqual</span><span style="color: #007700">(</span><span style="color: #0000BB">$result</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"Нет&nbsp;перевозчика&nbsp;в&nbsp;Норвегию"</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;}<br />}<br /></span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> <span class="missingpage">&lt;&lt; Тестирование помощников</span><a href="/wiki/TestingHelpers/edit?add=1" title="Создать эту страницу">?</a> | <span class="missingpage">Web тестирование &ndash; тестирование отображений &gt;&gt;</span><a href="/wiki/TestingViews/edit?add=1" title="Создать эту страницу">?</a></div></div>