определение Тестване тяло, окончателното ръководството на Yii, рамка Yii PHP
Автоматизирани тестове трябва да се извършват многократно. Бихме искали да тече тестове в някои известни условия, за да се гарантира повторяемост на процеса на тестване. Тези държави са наречени тела. Например, за да се тества функция за създаване на заявление публикация в блог всеки път, когато извършват тестове, таблици, съхраняващи съответните данни за записи (например Мнение маса. Коментар), трябва да бъдат възстановени в няколко снимки. Документация PHPUnit добро описание на основната инсталация на тела. По принцип, този раздел описва как да инсталирате тела на базата данни, както току-що описахме в примера.
Създаване на база данни тела е може би един от най-дългата част от тестването на уеб приложения, базирани на бази данни. Yii въвежда CDbFixtureManager компонент на приложението, за да се избегне този проблем. По същество това прави следното при извършване на серия от тестове:
- Преди извършването на всички тестове нулира всички таблици, свързани с тестовете на някои известни състояние.
- Преди извършването на отделна метод за изследване отхвърля определена маса някакъв известен състояние.
- По време на изпълнението на даден метод за изпитване осигурява достъп до линиите за данни, които се правят в опората.
За да използвате CDbFixtureManager компонент. ние го конфигурирате в конфигурацията на приложение, както следва:
След това запишете данните в осветителното защитена / тестове / тела директория. Тази директория може да се персонализира имот CDbFixtureManager :: конфигурация заявление basePath. Тези тела са организирани като колекция от PHP-файлове, наречени арматурни файлове. Всеки тяло файл връща масив, представляващ началните редове на данни за определена маса. име на файла - същото като името на таблицата. Следното е пример на данните за арматурни за масата Post. Post.php съхранява във файла:
Както се вижда от по-горе код 2 са върнати низ данни. Всеки ред е представен като асоциативен масив чиито ключове - това имена на колони и стойности - стойностите на съответните колони. Освен това, всеки ред се индексира низ (например АНАЛИЗ1. Sample2), който се нарича низ псевдоним. По-късно, когато пишем тестови скриптове, ние можем лесно да получите достъп до линията на името й. Ще разгледаме това по-подробно в следващия раздел.
Може би сте забелязали, че ние не се определи стойността на колона идентификатор в кода по-горе опората. Това е така, защото в едноименната графа - един основен ключ за автоматично увеличаване стойността на който ще бъде изпълнен, когато вмъкнете нови редове.
Първият път, когато компонентът CDbFixtureManager ще видите всеки тяло и да я използваме, за да нулирате съответната таблица. Той се връща на масата, изчистването от отпадане основната стойност на ключа, а след това да поставите данните на ред тяло файл в таблицата.
Понякога ние не искаме да възстановите всяка маса има приспособление файл, преди да сме проведе серия от тестове, защото нулиране твърде много тела на файлове може да отнеме много време. В този случай, ние можем да напишете PHP-скрипт, за да бъде в състояние да изберете работата инициализация. А PHP-скрипт, трябва да бъдат записани в init.php файл в същата директория като файлове за хващане. Когато CDbFixtureManager компонент ще открие този скрипт, то ще се изпълни този скрипт вместо да се налага да възстановите всяка маса.
Възможно е също така, че не ми харесва начина, по подразбиране, за да изчисти масата, тоест, изчистване на масата напълно и поставете данните за хващане. Ако това е така, ние можем да напишете инициализация скрипт за конкретна тяло файл. Скриптът трябва да се нарича в началото на която е името на таблицата, а след това - .init.php. Например, инициализация сценария за масата Post ще се нарича Post.init.php. Когато CDbFixtureManager компонент вижда този скрипт, то ще се изпълни сценария на мястото на използване на маса на стойност по подразбиране се нулира.
В следващите две части ще опиша как да се използват приспособления, които се управляват CDbFixtureManager компонент. в единична и функционални тестове.