CakePHP - Manual/CommonTasks/Testing/PreparingTestData /wiki/Manual/CommonTasks/Testing/PreparingTestData History/revisions of CakePHP/Manual/CommonTasks/Testing/PreparingTestData en-us 2009-04-28 12:47:44 /wiki/Manual/CommonTasks/Testing/PreparingTestData/show?time=2009-04-28+12%3A47%3A44 <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.preparingtestdata" href="/wiki/Manual/CommonTasks/Testing/PreparingTestData" class="">/Manual&nbsp;/&nbsp;Common&nbsp;Tasks&nbsp;/&nbsp;Testing&nbsp;/&nbsp;Preparing&nbsp;Test&nbsp;Data</a> за <a href="/wiki/Manual/CommonTasks/Testing/PreparingTestData?time=2009-04-28+12%3A47%3A44">2009-04-28 12:47:44</a> и <a href="/wiki/Manual/CommonTasks/Testing/PreparingTestData">2009-04-29 15:56:04</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><a name="h899-1"></a><h1> Подготовка данных для&nbsp;тестирования </h1></div><br /> <b>Удалено:</b><br /> <div class="deletions"><a name="h899-1"></a><h1> Подготовка тестовых данных </h1></div></div> 2009-04-28 12:01:29 /wiki/Manual/CommonTasks/Testing/PreparingTestData/show?time=2009-04-28+12%3A01%3A29 <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 href="/wiki/Manual/CommonTasks/Testing/PreparingTestData" class="">/Manual&nbsp;/&nbsp;Common&nbsp;Tasks&nbsp;/&nbsp;Testing&nbsp;/&nbsp;Preparing&nbsp;Test&nbsp;Data</a> за <a href="/wiki/Manual/CommonTasks/Testing/PreparingTestData?time=2009-04-28+12%3A01%3A29">2009-04-28 12:01:29</a> и <a href="/wiki/Manual/CommonTasks/Testing/PreparingTestData?time=2009-04-28+12%3A47%3A44">2009-04-28 12:47:44</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions"><a name="h899-1"></a><h3>Импортирование информации из&nbsp;таблиц и&nbsp;записей</h3> Ваше приложение может иметь уже&nbsp;работающую модель с&nbsp;реальными данными, и&nbsp;вы можете захотеть протестировать вашу модель с&nbsp;этими данными. Это&nbsp;будет дублирование усилий &ndash; определять таблицу и&nbsp;её записи в&nbsp;прикреплении. К&nbsp;счастью, существует способ определить таблицу и&nbsp;её записи для&nbsp;определенного прикрипления из&nbsp;существующей модели, или&nbsp;таблицы.<br /> Начнем с&nbsp;примера. Предположим у&nbsp;вас есть модель Article (соответствует таблице articles). Изменим пример прикрепления, приведенные выше (app/tests/fixtures/article_fixture.php):<br /> <div class="indent"> class <span class="missingpage">Article&nbsp;Fixture</span><a href="/wiki/ArticleFixture/edit?add=1" title="Создать эту страницу">?</a> extends <span class="missingpage">Cake&nbsp;Test&nbsp;Fixture</span><a href="/wiki/CakeTestFixture/edit?add=1" title="Создать эту страницу">?</a> { <br /> <div class="indent"><div class="indent"><div class="indent"><div class="indent">var $name = 'Article'; <br /> var $import = 'Article'; <br /> </div></div></div></div> } <br /> ?&gt; </div> Это&nbsp;выражение говорит тестовому комплексу импортировать определение таблицы из&nbsp;таблицы, привязанной к&nbsp;модели Article. Вы&nbsp;можете использовать любую модель, доступную в&nbsp;вашем приложении. Выражение, приведенное выше, не&nbsp;импортирует записи, но&nbsp;вы можете сделать это, изменив его&nbsp;таким образом:<br /> &lt;?php <br /> class <span class="missingpage">Article&nbsp;Fixture</span><a href="/wiki/ArticleFixture/edit?add=1" title="Создать эту страницу">?</a> extends <span class="missingpage">Cake&nbsp;Test&nbsp;Fixture</span><a href="/wiki/CakeTestFixture/edit?add=1" title="Создать эту страницу">?</a> {<br /> <div class="indent"><div class="indent">var $name = 'Article';<br /> var $import = array('model' =&gt; 'Article', 'records' =&gt; true); </div></div> }<br /> ?&gt; <br /> Если же&nbsp;у вас&nbsp;есть таблица, но&nbsp;нет модели для&nbsp;неё, то&nbsp;вы можете указать таблицу, а&nbsp;не модель:<br /> <div class="indent"> class <span class="missingpage">Article&nbsp;Fixture</span><a href="/wiki/ArticleFixture/edit?add=1" title="Создать эту страницу">?</a> extends <span class="missingpage">Cake&nbsp;Test&nbsp;Fixture</span><a href="/wiki/CakeTestFixture/edit?add=1" title="Создать эту страницу">?</a> { <br /> <div class="indent"><div class="indent"><div class="indent"><div class="indent">var $name = 'Article'; <br /> var $import = array('table' =&gt; 'articles'); <br /> </div></div></div></div> } </div> Этот код&nbsp;будет импортировать определение таблицы из&nbsp;таблицы 'articles', используя 'default' соединение к&nbsp;базе данных. Если вы&nbsp;хотите изменить соединение, то&nbsp;делайте так:<br /> <div class="indent"> class <span class="missingpage">Article&nbsp;Fixture</span><a href="/wiki/ArticleFixture/edit?add=1" title="Создать эту страницу">?</a> extends <span class="missingpage">Cake&nbsp;Test&nbsp;Fixture</span><a href="/wiki/CakeTestFixture/edit?add=1" title="Создать эту страницу">?</a> { <br /> var $name = 'Article'; <br /> var $import = array('table' =&gt; 'articles', 'connection' =&gt; 'other'); <br /> } <br /> ?&gt; </div> Если в&nbsp;соединении к&nbsp;базе данных определен префикс, то&nbsp;он будет автоматически использоваться при&nbsp;получении информации о&nbsp;таблице. Предыдущие два&nbsp;примера не&nbsp;импортируют записи из&nbsp;таблицы. Чтобы заставить прикрепление также импортировать и&nbsp;записи внесите следующие изменения:<br /> &lt;?php <br /> <div class="indent"> class <span class="missingpage">Article&nbsp;Fixture</span><a href="/wiki/ArticleFixture/edit?add=1" title="Создать эту страницу">?</a> extends <span class="missingpage">Cake&nbsp;Test&nbsp;Fixture</span><a href="/wiki/CakeTestFixture/edit?add=1" title="Создать эту страницу">?</a> { <br /> <div class="indent"><div class="indent"><div class="indent"><div class="indent">var $name = 'Article'; <br /> var $import = array('table' =&gt; 'articles', 'records' =&gt; true); <br /> </div></div></div></div> } </div> Также вы&nbsp;можете импортировать структуру таблицы из&nbsp;существующей модели/таблицы, а&nbsp;записи для&nbsp;этой таблицы определить непосредственно в&nbsp;прикриплении:<br /> <div class="indent"> class <span class="missingpage">Article&nbsp;Fixture</span><a href="/wiki/ArticleFixture/edit?add=1" title="Создать эту страницу">?</a> extends <span class="missingpage">Cake&nbsp;Test&nbsp;Fixture</span><a href="/wiki/CakeTestFixture/edit?add=1" title="Создать эту страницу">?</a> { <br /> <div class="indent"><div class="indent"><div class="indent"><div class="indent">var $name = 'Article'; <br /> var $import = 'Article'; <br /> <br /> var $records = array( <br /> <div class="indent"><div class="indent">array ('id' =&gt; 1, 'title' =&gt; 'First Article', 'body' =&gt; 'First Article Body', 'published' =&gt; '1', 'created' =&gt; '<span class="nobr">2007&ndash;03&ndash;18</span> 10:39:23', 'updated' =&gt; '<span class="nobr">2007&ndash;03&ndash;18</span> 10:41:31'), <br /> array ('id' =&gt; 2, 'title' =&gt; 'Second Article', 'body' =&gt; 'Second Article Body', 'published' =&gt; '1', 'created' =&gt; '<span class="nobr">2007&ndash;03&ndash;18</span> 10:41:23', 'updated' =&gt; '<span class="nobr">2007&ndash;03&ndash;18</span> 10:43:31'), <br /> array ('id' =&gt; 3, 'title' =&gt; 'Third Article', 'body' =&gt; 'Third Article Body', 'published' =&gt; '1', 'created' =&gt; '<span class="nobr">2007&ndash;03&ndash;18</span> 10:43:23', 'updated' =&gt; '<span class="nobr">2007&ndash;03&ndash;18</span> 10:45:31') <br /> </div></div>); <br /> </div></div></div></div> } </div> <span class="missingpage">&lt;&lt; Обзор тестирования</span><a href="/wiki/Overview/edit?add=1" title="Создать эту страницу">?</a> | <span class="missingpage">Создание тестов &gt;&gt;</span><a href="/wiki/Creating/edit?add=1" title="Создать эту страницу">?</a></div></div> 2009-04-27 21:32:34 /wiki/Manual/CommonTasks/Testing/PreparingTestData/show?time=2009-04-27+21%3A32%3A34 <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 href="/wiki/Manual/CommonTasks/Testing/PreparingTestData" class="">/Manual&nbsp;/&nbsp;Common&nbsp;Tasks&nbsp;/&nbsp;Testing&nbsp;/&nbsp;Preparing&nbsp;Test&nbsp;Data</a> за <a href="/wiki/Manual/CommonTasks/Testing/PreparingTestData?time=2009-04-27+21%3A32%3A34">2009-04-27 21:32:34</a> и <a href="/wiki/Manual/CommonTasks/Testing/PreparingTestData?time=2009-04-28+12%3A01%3A29">2009-04-28 12:01:29</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">При&nbsp;создании прикрепления, в&nbsp;основном, вам&nbsp;надо определить две&nbsp;вещи: структуру таблицы (какие поля будут входить в&nbsp;неё), и&nbsp;какие записи будут изначально записаны в&nbsp;эту тестовую таблицу. Давайте создадим наше первое прикрипление, которое будет использоваться для&nbsp;тестирования нашей модели Article. В&nbsp;каталоге app/tests/fixtures создадим файл article_fixture.php со&nbsp;следующим содержимым:<br /> <!--notypo--><div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?php&nbsp;&nbsp;<br />&nbsp;</span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">ArticleFixture&nbsp;</span><span style="color: #007700">extends&nbsp;</span><span style="color: #0000BB">CakeTestFixture&nbsp;</span><span style="color: #007700">{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">$name&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'Article'</span><span style="color: #007700">;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">$fields&nbsp;</span><span style="color: #007700">=&nbsp;array(&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'id'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'type'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'integer'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'key'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'primary'</span><span style="color: #007700">),&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'title'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'type'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'string'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'length'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">255</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'null'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">),&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'body'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'text'</span><span style="color: #007700">,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'published'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'type'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'integer'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'default'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'0'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'null'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">),&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'created'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'datetime'</span><span style="color: #007700">,&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'updated'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'datetime'&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">$records&nbsp;</span><span style="color: #007700">=&nbsp;array(&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array&nbsp;(</span><span style="color: #DD0000">'id'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'title'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Первая&nbsp;статья'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'body'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Содержимое&nbsp;первой&nbsp;статьи'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'published'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'1'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'created'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'2007-03-18&nbsp;10:39:23'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'updated'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'2007-03-18&nbsp;10:41:31'</span><span style="color: #007700">),&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array&nbsp;(</span><span style="color: #DD0000">'id'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'title'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Вторая&nbsp;статья'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'body'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Содержимое&nbsp;второй&nbsp;статьи'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'published'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'1'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'created'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'2007-03-18&nbsp;10:41:23'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'updated'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'2007-03-18&nbsp;10:43:31'</span><span style="color: #007700">),&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array&nbsp;(</span><span style="color: #DD0000">'id'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">3</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'title'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Третья&nbsp;статья'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'body'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Содержимое&nbsp;третьей&nbsp;статьи'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'published'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'1'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'created'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'2007-03-18&nbsp;10:43:23'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'updated'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'2007-03-18&nbsp;10:45:31'</span><span style="color: #007700">)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;<br />&nbsp;}&nbsp;<br />&nbsp;</span><span style="color: #0000BB">?&gt;</span> </span> </code></div><!--/notypo--><br /> Мы&nbsp;используем $fields для&nbsp;определения того, какие поля будет содержать таблица. Формат, используемый для&nbsp;определения этих полей, такой же, который используется в&nbsp;функции generateColumnSchema(), определенной в&nbsp;классах движка баз&nbsp;данных <!--notypo-->CakePHP<!--/notypo--> (например, в&nbsp;файле dbo_mysql.php.) Давайте посмотрим какие атрибуты может иметь поле и&nbsp;их значение:<br /> <strong>type</strong> <br /> <div class="indent"> внутренний тип&nbsp;данных <!--notypo-->CakePHP<!--/notypo-->. Сейчас поддерживаются: string (соответствует VARCHAR), text (соответствует TEXT), integer (соответствует to&nbsp;INT), float (соответствует to&nbsp;FLOAT), datetime (соответствует DATETIME), timestamp (соответствует TIMESTAMP), time (соответствует TIME), date (соответствует DATE), и&nbsp;binary (соответствует BLOB)</div> <strong>key</strong> <br /> <div class="indent"> установите в&nbsp;'primary', чтобы поле было AUTO_INCREMENT и&nbsp;PRIMARY KEY&nbsp;для таблицы.</div> <strong>length</strong> <br /> <div class="indent"> присваивайте определенную длину, которую должно иметь поле.</div> <strong>null</strong><br /> <div class="indent"> устанавливайте в&nbsp;true (для разрешения значений NULL) или&nbsp;false (для запрещения значений NULL)</div> <strong>default</strong> <br /> <div class="indent"> значение по&nbsp;умолчанию, которое принимает поле.</div> И&nbsp;наконец-то, мы&nbsp;можем определить множество записей, которые будут записаны в&nbsp;тестовую таблицу сразу же&nbsp;после её создания. Формат довольно простой и&nbsp;требует минимум дальнейших разъяснений. Просто помните, что&nbsp;каждая запись в&nbsp;массиве $records должна иметь ключ для&nbsp;каждого поля, определенного в&nbsp;массиве $fields. Если поля для&nbsp;какой-то записи должно иметь значение NULL, то&nbsp;просто определите значение этого поля как&nbsp;NULL.</div></div> 2009-04-27 19:30:46 /wiki/Manual/CommonTasks/Testing/PreparingTestData/show?time=2009-04-27+19%3A30%3A46 <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 href="/wiki/Manual/CommonTasks/Testing/PreparingTestData" class="">/Manual&nbsp;/&nbsp;Common&nbsp;Tasks&nbsp;/&nbsp;Testing&nbsp;/&nbsp;Preparing&nbsp;Test&nbsp;Data</a> за <a href="/wiki/Manual/CommonTasks/Testing/PreparingTestData?time=2009-04-27+19%3A30%3A46">2009-04-27 19:30:46</a> и <a href="/wiki/Manual/CommonTasks/Testing/PreparingTestData?time=2009-04-27+21%3A32%3A34">2009-04-27 21:32:34</a></b><br /> <br /> <b>Добавлено:</b><br /> <div class="additions">Когда тестируете код, который зависит от&nbsp;моделей и&nbsp;данных, можно использовать прикрепления, как&nbsp;способ генерировать временные таблицы, заполненные данными для&nbsp;тестирования. Преимущество использования прикреплений &ndash; это&nbsp;то, что&nbsp;ваш тест не&nbsp;сможет разрушить реальные данные. Также, вы&nbsp;можете начать тестировать ваш&nbsp;код непосредственно до&nbsp;разработки реального содержимого для&nbsp;приложения.<br /> <!--notypo-->CakePHP<!--/notypo--> попытается использовать соединение с&nbsp;именем $test в&nbsp;конфигурационном файле app/config/database.php. Если это&nbsp;соединение не&nbsp;получится использовать, то&nbsp;будет использоваться $default конфигурация и&nbsp;в этой базе данных будут создаваться тестовые таблицы. В&nbsp;обоих случаях, к&nbsp;имени таблиц будет добавляться префикс &#147;test_suite_", для&nbsp;предотвращения конфликтов с, возможно, уже&nbsp;существующими таблицами.<br /> <!--notypo-->CakePHP<!--/notypo--> выполняет следующие действия во&nbsp;время теста, основанного на&nbsp;прикреплениях:<br /> <div class="indent"> 1. Создает необходимые таблицы для&nbsp;прикрепления<br /> 2. Заполняет таблицы данными, если эти&nbsp;данные представлены в&nbsp;прикреплении<br /> 3. Выполняет методы теста<br /> 4. Очищает таблицы прикрепления<br /> 5. Удаляет таблицы прикрепления из&nbsp;базы данных</div> <hr noshade="noshade" size="1" /><a name="h899-1"></a><h3>Создание прикреплений</h3></div></div>