Zend_Test_PHPUnit
Zend_Test_PHPUnit bietet einen TestCase, für MVC Anwendungen die
Ausnahmen enthalten, für das Testen einer Vielzahl an Möglichkeiten. Der warscheinlich
einfachste Weg um zu verstehen was das ist, ist das ansehen des folgenden Beispiels.
Beispiel eines TestCases für ein Anwendungs Login
Das folgende ist ein einfacher TestCase für einen UserController um
verschiedene Dinge zu prüfen:
Die Login Form sollte nicht-authenthifizierten Benutzern angezeigt werden.
Wenn sich ein Benutzer einloggt, sollte er zu seiner Profilseite umgeleitet werden,
und diese Profilseite sollte relevante Informationen enthalten.
Dieses spezielle Beispiel nimmt ein paar Dinge an. Erstens schieben wird das meiste
unseres Bootstrappings in ein Plugin. Das vereinfacht das Setup des TestCases da es uns
erlaubt unsere Umgebung geziehlt zu spezifizieren, und es uns ausserdem erlaubt die
Anwendung in einer einzigen Zeile zu starten. Unser spezielles Beispiel nimmt auch an
das das Setup automatisch lädt sodas wir uns nicht um das laden der betreffenden Klassen
kümmern müssen (wie die richtigen Kontroller, Plugins, usw).
bootstrap = array($this, 'appBootstrap');
parent::setUp();
}
public function appBootstrap()
{
$this->frontController
->registerPlugin(new Bugapp_Plugin_Initialize('development'));
}
public function testCallWithoutActionShouldPullFromIndexAction()
{
$this->dispatch('/user');
$this->assertController('user');
$this->assertAction('index');
}
public function testIndexActionShouldContainLoginForm()
{
$this->dispatch('/user');
$this->assertAction('index');
$this->assertQueryCount('form#loginForm', 1);
}
public function testValidLoginShouldGoToProfilePage()
{
$this->request->setMethod('POST')
->setPost(array(
'username' => 'foobar',
'password' => 'foobar'
));
$this->dispatch('/user/login');
$this->assertRedirectTo('/user/view');
$this->resetRequest()
->resetResponse();
$this->request->setMethod('GET')
->setPost(array());
$this->dispatch('/user/view');
$this->assertRoute('default');
$this->assertModule('default');
$this->assertController('user');
$this->assertAction('view');
$this->assertNotRedirect();
$this->assertQuery('dl');
$this->assertQueryContentContains('h2', 'User: foobar');
}
}
]]>
Dieses Beispiel können auch einfacher geschrieben werden -- nicht alle der gezeigten
Ausnahmen sind notwendig. Hoffentlich zeigt es wie einfach es ist die eigene Anwendung
zu testen. This example could be written somewhat simpler -- not all the
assertions shown are necessary, and are provided for illustration
purposes only. Hopefully, it shows how simple it can be to test
your applications.