CakePHP : Manual/CommonTasks/Testing/TestingComponents

Тестирование компонентов


Допустим, мы хотим протестировать компонент TransporterComponent, который использует модель Transporter для предоставления функциональности для других контроллеров. Мы будем использовать четыре файла:


Инициализирование компонента


Поскольку CakePHP не позволяет импортировать модели непосредственно в компоненты, то нам понадобится контроллер для доступа к данным модели.

Если функция startup() компонента выглядит так:

<?
public function startup(&$controller){ 
          
$this->Transporter $controller->Transporter;  
 }
?>


тогда мы можем просто создать фиктивный класс:

<?
class FakeTransporterController {} 
?>


и определить значения таким образом:

<?
$this
->TransporterComponentTest = new TransporterComponent(); 
$controller = new FakeTransporterController(); 
$controller->Transporter = new TransporterTest(); 
$this->TransporterComponentTest->startup(&$controller); 
?>



Создание тестирующего метода


Просто создадим класс, который расширяет CakeTestCase и начнем писать тесты.

<?
class TransporterTestCase extends CakeTestCase {
    var 
$fixtures = array('transporter');  
    function 
testGetTransporter() { 
          
$this->TransporterComponentTest = new TransporterComponent(); 
          
$controller = new FakeTransporterController(); 
          
$controller->Transporter = new TransporterTest(); 
          
$this->TransporterComponentTest->startup(&$controller); 
   
          
$result $this->TransporterComponentTest->getTransporter("12345""Швеция""54321""Швеция"); 
          
$this->assertEqual($result1"SP наилучший для 1xxxx-5xxxx"); 
           
          
$result $this->TransporterComponentTest->getTransporter("41234""Швеция""44321""Швеция"); 
          
$this->assertEqual($result2"WSTS наилучший для 41xxx-44xxx"); 
   
          
$result $this->TransporterComponentTest->getTransporter("41001""Швеция""41870""Швеция"); 
          
$this->assertEqual($result3"GL наилучший для 410xx-419xx"); 
   
          
$result $this->TransporterComponentTest->getTransporter("12345""Швеция""54321""Норвегия"); 
          
$this->assertEqual($result0"Нет перевозчика в Норвегию");         
   }
}
?>


<< Тестирование помощников | Web тестирование – тестирование отображений >>