2 Stimmen

Unit-Testing von Zend-Controllern - wie teste ich, was in der Ansicht eingestellt wurde

In Zend werden die Modelle zur Ansicht hinzugefügt:

//In a controller
public function indexAction() {
  //Do some work and get a model
  $this->view->model = $model;    
}

Wir können leicht überprüfen, ob "model" in der Ansicht vorhanden ist (ich verwende simpletest für diese Aufgabe):

//In a unit test
  public function testModelIsSetInView() {
    //Call the controllers index action
    $this->assertTrue(isset($this->controller->view->model));
  }

Das Testen des "Wertes" funktioniert jedoch nicht so gut:

//In a unit test
  public function testModelValue() {
    //Call the controllers index action

    //Both of these return null, though I'd like to access them!
    $this->assertNull($this->controller->view->model);
    $this->assertNull($this->controller->view->__get('model'));
  }

Wie bekomme ich (oder zumindest testen), dass der Controller ein gültiges Modell gesetzt hat?

1voto

0voto

Todd R Punkte 17676

Also, die Lösung (zumindest die geplante zu diesem Zeitpunkt) ist eine testbare Ansicht, die Zend_View_Interface implementiert. Das wird eine "get" Methode enthalten die Objekte zurückgibt die an "__set" übergeben werden. Dann werden wir den Controller so einbinden das er diese View während des Test Bootstrapping Prozesses verwendet.

Da dies vielleicht nicht der optimale Ansatz ist, würde ich trotzdem gerne von anderen hören, die mögliche Lösungen haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X