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