SamuelWeber
24.07.2009, 16:34
Guten Tag die Damen und Herren,
ich habe noch ein kleines Problem mit dem Unittesting in einem Controller.
Ich habe momentan folgende Testmethode in meiner Klasse.
public function testCanLogin()
{
$this->getRequest()
->setMethod('POST')
->setParams(array(
'username' => 'myusername',
'password' => 'mypassword'
))
->setHeader('X-Requested-With', 'XmlHttpRequest');
$this->dispatch('/login/checklogin');
$this->assertController('login');
$this->assertAction('checklogin');
}
Wenn ich nun den Test starte und das Codecoverage erzeugen lasse bemerke ich aber das er mir den Header nicht setzt und somit wieder aus der Action springt.
Hier die Action aus dem Controller:
public function checkloginAction()
{
$this->getFrontController()->setParam('noViewRenderer', true);
if(!$this->getRequest()->isXmlHttpRequest()) {
return false;
}
if(!$this->getRequest()->isPost()) {
return false;
}
$form = $this->getLoginForm();
/* usw usw */
Das Codecoverage geht aber nur bis zur erster IF-Anweisung da er bei isXmlHttpRequest false bekommt. Kann mir einer auf die Sprünge helfen wieso er den Header nicht so annimmt wie ich ihn gerne definiert haben würde.
Würde mich über eine Antwort oder einen Tipp sehr freuen.
mit freundlichen Grüßen
Samuel Weber
// edit
->setHeader('X-Requested-With', 'XmlHttpRequest', true);
nützt in diesem Falle auch nichts.
mfg Sam
ich habe noch ein kleines Problem mit dem Unittesting in einem Controller.
Ich habe momentan folgende Testmethode in meiner Klasse.
public function testCanLogin()
{
$this->getRequest()
->setMethod('POST')
->setParams(array(
'username' => 'myusername',
'password' => 'mypassword'
))
->setHeader('X-Requested-With', 'XmlHttpRequest');
$this->dispatch('/login/checklogin');
$this->assertController('login');
$this->assertAction('checklogin');
}
Wenn ich nun den Test starte und das Codecoverage erzeugen lasse bemerke ich aber das er mir den Header nicht setzt und somit wieder aus der Action springt.
Hier die Action aus dem Controller:
public function checkloginAction()
{
$this->getFrontController()->setParam('noViewRenderer', true);
if(!$this->getRequest()->isXmlHttpRequest()) {
return false;
}
if(!$this->getRequest()->isPost()) {
return false;
}
$form = $this->getLoginForm();
/* usw usw */
Das Codecoverage geht aber nur bis zur erster IF-Anweisung da er bei isXmlHttpRequest false bekommt. Kann mir einer auf die Sprünge helfen wieso er den Header nicht so annimmt wie ich ihn gerne definiert haben würde.
Würde mich über eine Antwort oder einen Tipp sehr freuen.
mit freundlichen Grüßen
Samuel Weber
// edit
->setHeader('X-Requested-With', 'XmlHttpRequest', true);
nützt in diesem Falle auch nichts.
mfg Sam