PDA

Vollständige Version anzeigen : phpunit setHeader-Problem


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

ice-breaker
24.07.2009, 17:22
probiers mal mit:
->setHeader('X_REQUESTED_WITH', 'XMLHttpRequest');

hmm, aber eigentlich tut derRequest_HttpTestcase das so umwandeln, hmm

SamuelWeber
25.07.2009, 12:23
Hallo ice-breaker,
bin gerade erst jetzt dazugekommen deinen Vorschlag zu testen. Vielen Dank dafür. Funkioniert wunderbar!

//edit:

->setHeader('X_REQUESTED_WITH', 'XMLHttpRequest');
Das entscheidende war XMLHttpRequest anstatt XmlHttpRequest. Der Key des Headers kann man auf beide Arten angeben.

X-Requested-With und X_REQUESTED_WITH

funktionieren.

Nochmals vielen Dank für die super Hilfe.

Mit freundlichen Grüßen
Samuel Weber