4.7.8 Probando componentes
Supongamos que queremos hacer test a un componente llamado TransporterComponent, el cual usa un modelo llamado Transporter para proporcionar funcionalidad a otros controladores. Utilizaremos cuatro archivos:
- Un componente llamado Transporters que se encuentra en app/controllers/components/transporter.php
- Un modelo llamado Transporte que está en app/models/transporter.php
- Una fixture llamada TransporterTestFixture situada en app/tests/fixtures/transporter_fixture.php
- El código para el test, en app/tests/cases/transporter.test.php
4.7.8.1 Initializing the component
Ya que CakePHP desaliante importar modelos directamente en los componentes necesitamos un controlador para acceder a los datos en el mmodelo.
Si el método startup() del componente tiene este aspecto:
public function startup(&$controller){
$this->Transporter = $controller->Transporter;
}
public function startup(&$controller){$this->Transporter = $controller->Transporter;}
entonces podemos simplemente crear una clase sencilla:
class FakeTransporterController {} class FakeTransporterController {}
y asignarle valores dentro de ella como aquí:
$this->TransporterComponentTest = new TransporterComponent(); $controller = new FakeTransporterController(); $controller->Transporter = new TransporterTest(); $this->TransporterComponentTest->startup(&$controller);
$this->TransporterComponentTest = new TransporterComponent();$controller = new FakeTransporterController();$controller->Transporter = new TransporterTest();$this->TransporterComponentTest->startup(&$controller);
Ver comentarios para esta sección
4.7.8.2 Creando un método de prueba
Simplemente crea una clase que extienda CakeTestCase y ¡comienza a escribir tests!
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", "Sweden", "54321", "Sweden");
$this->assertEqual($result, 1, "SP is best for 1xxxx-5xxxx");
$result = $this->TransporterComponentTest->getTransporter("41234", "Sweden", "44321", "Sweden");
$this->assertEqual($result, 2, "WSTS is best for 41xxx-44xxx");
$result = $this->TransporterComponentTest->getTransporter("41001", "Sweden", "41870", "Sweden");
$this->assertEqual($result, 3, "GL is best for 410xx-419xx");
$result = $this->TransporterComponentTest->getTransporter("12345", "Sweden", "54321", "Norway");
$this->assertEqual($result, 0, "Noone can service Norway");
}
}
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", "Sweden", "54321", "Sweden");$this->assertEqual($result, 1, "SP is best for 1xxxx-5xxxx");$result = $this->TransporterComponentTest->getTransporter("41234", "Sweden", "44321", "Sweden");$this->assertEqual($result, 2, "WSTS is best for 41xxx-44xxx");$result = $this->TransporterComponentTest->getTransporter("41001", "Sweden", "41870", "Sweden");$this->assertEqual($result, 3, "GL is best for 410xx-419xx");$result = $this->TransporterComponentTest->getTransporter("12345", "Sweden", "54321", "Norway");$this->assertEqual($result, 0, "Noone can service Norway");}}


























