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 тестирование – тестирование отображений >>