Skip to content

Commit a9ff644

Browse files
committed
update step
1 parent 13f4fe2 commit a9ff644

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

scripts/steps/step-001.3.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,69 @@ class SatelliteFixture extends ActiveFixture
304304

305305
Остальные две: `PlanetFixture` и `StarFixture` создайте самостоятельно.
306306

307+
Без `$dataFile` фикстуры <a href="http://www.yiiframework.com/doc-2.0/yii-test-activefixture.html" target="_blank">ActiveFixture</a>
308+
будут очищать таблицы без внесения первоначальных данных. Явно можно не указывать расположение файла с данными(`$dataFile`),
309+
а просто его создать в той же директории, где лежит фикстура, с учётом имени таблицы. Т.е. для фикструры `SatelliteFixture`
310+
нужно создать в директории `yii2-app-advanced/tests/codeception/common/fixtures/data` файл с именем `satellite.php`. Для
311+
вашего удобства эти файлы уже созданы заранее.
307312

313+
Фикстуры созданы, теперь нужно определить порядок их загрузки. Если мы сначала начнём загружать фикстуру для таблицы планет,
314+
то споткнёмся на ограничение внешних ключей в базе данных, т.е. вставляя данные из `yii2-app-advanced/tests/codeception/common/fixtures/data/planet.php`
315+
316+
```php
317+
return [
318+
[
319+
'name' => 'Земля',
320+
'star_id' => '1',
321+
],
322+
];
323+
```
324+
325+
получим ошибку
326+
327+
> SQLSTATE[23000]: Integrity constraint violation: 19 FOREIGN KEY constraint failed
328+
329+
которая обозначает, что звезды с ID = 1 не найдено. Поэтому сначала нужно загрузить фикстуру для звезды,
330+
затем для планеты и на последок фикстуру для спутников. Подключаем загрузку фикстур в файле помощнике FixtureHelper:
331+
332+
```php
333+
public function fixtures()
334+
{
335+
return [
336+
'user' => [
337+
'class' => UserFixture::className(),
338+
'dataFile' => '@tests/codeception/common/fixtures/data/init_login.php',
339+
],
340+
'star' => [
341+
'class' => tests\codeception\common\fixtures\StarFixture::className(),
342+
],
343+
'planet' => [
344+
'class' => tests\codeception\common\fixtures\PlanetFixture::className(),
345+
],
346+
'satellite' => [
347+
'class' => tests\codeception\common\fixtures\SatelliteFixture::className(),
348+
],
349+
];
350+
}
351+
```
352+
353+
<p class="alert alert-info">У <a href="http://www.yiiframework.com/doc-2.0/yii-test-activefixture.html" target="_blank">ActiveFixture</a>
354+
есть свойстов `$depends`, с помощью которого можно также установить порядок связей фикстур.
355+
</p>
356+
357+
Теперь при запуске теста формы, мы сможем выбрать звезду из выпадающего списка.
358+
359+
```php
360+
codecept run functional functional/PlanetFormCept.php
361+
362+
Tests\codeception\backend.functional Tests (1) ------
363+
------------------------------------------
364+
Trying to ensure than create form works Ok
365+
-----------------------------------------------------
366+
367+
Time: 1.03 seconds, Memory: 21.50Mb
368+
OK (1 test, 1 assertion)
369+
```
308370

309371
#### Дополнительная информация для самостоятельного ознакомления:
310372

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy