Wie kann ich verhindern Zend_Db_Table_Abstract fetchRow Müll Daten zurückkehren, wenn Tests ausgeführt werden?

StackOverflow https://stackoverflow.com/questions/1643380

  •  10-07-2019
  •  | 
  •  

Frage

Ich bin ziemlich neu in Zend und einige Schwierigkeiten habe mit meinen Unit-Tests zu schaffen. Ich habe es auf einen minimalen Testklasse abgespeckte, die immer noch das Problem, in der Hoffnung, repliziert, dass es etwas bescheuert, dass ich so mache:

class UserRegistrationsTest extends PHPUnit_Framework_TestCase 
{ 

protected $ db;

public function __construct ($ name = NULL)  {   parent :: __ construct ($ name);

$ this-> db = Zend_Db :: factory ( 'Pdo_Mysql' angegeben, array (    'Host' => '127.0.0.1',    'Username' => 'root',    'Passwort' => 'xxxxxxxx',    'Dbname' => 'testingdb'    ));

Zend_Db_Table_Abstract :: setDefaultAdapter ($ this-> db);  }

public function Testname ()     {        $ Users = new User ();        $ Select = $ Nutzer-> select () -> where ( 'RegCode =?', 'DEADBEEF');        $ Row = $ Nutzer-> fetchRow ($ wählen);  }

}

Das ist also die vereinfachte Prüfung. Ich habe eine DB eingerichtet (die Verbindung korrekt ist), die Daten in ihr hat. Es gibt einen Datensatz mit RegCode zu ‚DEADBEEF‘ gesetzt und es hat auch Felder für E-Mail, regDate und Affiliate-:

CREATE TABLE  testingdb.users (
         regCode varchar(16) NOT NULL,
         email varchar(150) NOT NULL,
         regDate datetime NOT NULL,
         affiliate int(10) unsigned DEFAULT NULL,
         PRIMARY KEY (regCode))   

Ich habe eine Klasse namens users.php, die so einfach ist, wie es erhält:

class Users extends Zend_Db_Table_Abstract {

protected $_name = 'users';

}

Mein Problem ist, dass ich in die Datenbank in Ordnung einfügen kann, aber alle Abfragen geben ungeradee Ergebnisse. Die fetchRow erzeugt über die richtige SQL aber die zurückgegebene Reihe ist Müll - eine Zeile zurückgibt, enthält RegCode, E-Mail, keine regDate Spalte überhaupt, dann ist die Affiliate gibt es aber die collumn ist ‚Benutzer‘ anstelle von ‚Affiliate‘ genannt.

Ich habe es versucht, auf anderen Tabellen und keine Arbeit - einige sogar den Datenbanknamen als Spaltenkopf sowie die Tabellennamen als Spalte zurückgeben

.

Eine Sache zu beachten ist, dass, wenn ich das nicht in einem Test läuft es funktioniert gut. Der exakt gleiche Code und db in der richtigen App funktionieren gut, aber als PHPUnit-Test laufen und es wird alle screwy: - (

Jede Beratung schätzen

Cheers, Bryn

War es hilfreich?

Lösung 2

Dies war ein alter Zend Bug, der nun behoben ist

Andere Tipps

Haben Sie eine andere Tabelle oder auch eine andere Datenbank mit einer Tabelle, die ein RegCode Feld hat? Sie könnten den falschen Adapter verwenden, die erklären würde, warum Ihre Abfrage ausgeführt werden nach wie vor. Voraussetzung für die Testumgebung wäre zumindest die genau die gleiche Struktur wie die Produktionsumgebung haben (Tabellen + Felder). Wenn sie sich unterscheiden, können einige Abfragen ausführen gut, einige andere nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top