Frage

Ich versuche, SimpleTest mit CodeIgniter zu verwenden, indem ich Code verwende, der von bereitgestellt wird kastanienbraunes.Ich benutze LAMP und NetBeans 6.9.

Test.die PHP-Seite wird in meinem Browser geladen.Ich habe einen Stub-Test eingerichtet, der in der Dropdown-Auswahl angezeigt wird.Wenn ich versuche, es auszuführen, erhalte ich 2 PHP-Fehler:

Nachricht:include_once(/var/www/sparts3/main/tests/basic_test_v.php ):stream konnte nicht geöffnet werden:Keine solche Datei oder Verzeichnis

Nachricht:include_once():Fehlgeschlagenes Öffnen '/var/www/sparts3/main/tests/basic_test_v.php ' für Inklusion (include_path='.:/usr / teilen /php:/ usr / teilen /birne')

Der Weg ist falsch -- basic_test_v.php befindet sich in einem Unterordner / tests / ansichten.

Der Debugger zeigt darauf in Test.PHP:

function add_test($file, &$test)

Aus irgendeinem Grund macht NetBeans den Wert von $file zu diesem Zeitpunkt nicht verfügbar.Heißt das, es ist leer?

Ich habe bereits eine Codezeile erstellt, weil sie mich an einer Code 404-Seite vorbeiführt, die nicht gefunden wurde.es schien, dass der Debugger GET dazu führte, dass der Validator fehlschlug.Also habe ich auf meine unwissende Weise ein Kriterium hinzugefügt (ich bin mir sicher, es sollte eine behandelte Ausnahme sein oder so):

if ($this->uri->uri_string == '' || $this->uri->uri_string == 'XDEBUG_SESSION_START')
    {   ...  }

Wie kann ich das lösen?Übrigens, das wird versucht zu lösen mein anderer Beitrag, die ich aktualisieren werde;es schien am besten, dies zu einer diskreten Frage zu machen.


AKTUALISIERUNG 1: Ich habe das Webentwickler-Add-In (Firefox) verwendet, um mit den POST-Einträgen zu experimentieren.Ich glaube, dass diese im Kodex falsch gehandhabt werden.Es scheint immer noch, dass NetBeans beim Debuggen einige Zeichenfolgenvariablen nicht anzeigt;das ist frustrierend.

AKTUALISIERUNG 2: Es scheint mir, dass die Verarbeitung von gültigem Code an derselben Stelle stoppt, an der NetBeans keine Variablen mehr anzeigt.Ich bin durchgegangen Test.PHP.Ich bin auf halbem Weg durch eine Funktion, add_test($Datei, &$test).Diese Funktion wird mit einer if-Anweisung geöffnet;das endet gut und ich kann die Variablen sehen.Dann eine neue if-Anweisung:

if (file_exists($implementation))
{
    require_once ($implementation); ...

Sobald ich in dieser Leitung bin, passieren 2 Dinge:

  1. Die Variablenanzeige in NetBeans wird leer außer für SuperGlobale
  2. Der Code verhält sich so, als ob $Umsetzung ist eine leere Variable

Ich habe eine Aussage direkt über diesen Zeilen hinzugefügt:

$implementation = 'http://var/www/sparts3/main/tests/views/basic_test_view.php';

Das ändert nichts.Die Browserausgabe ist dieselbe, unabhängig davon, ob ich NetBeans / Xdebug verwende oder nicht.

Es fängt also an, wie ein PHP-Verarbeitungsfehler auszusehen.Gibt es solche?Ich kann versuchen, es vom Host-Service hochzuladen und zu versuchen - nur für diagnostische Hinweise und freudlos, weil CI ohne die Fähigkeit zum Debuggen für mich nicht von Interesse ist.


AKTUALISIERUNG 3: Ich habe alles auf einem WAMP-PC ausprobiert.Gleiche Browserergebnisse (plus einige "veraltete" Fehler, die etwas mit PHP 4 zu tun haben vs.5).Ich denke, ich kann auf diesem PC debuggen (wenn Xdebug funktioniert), aber es scheint wenig Sinn zu haben.

War es hilfreich?

Lösung

Hast du umbenannt basic_test_v.php zu basic_test_view .php?der Code erwartet, dass Ihre Dateien richtig benannt und gespeichert werden.

AKTUALISIERUNG 1 (ja, ich bin gelangweilt)

Ich habe bereits eine Codezeile erstellt weil es mich an einem Code 404 vorbeibringt Seite nicht gefunden.es schien der Debugger GET hat dazu geführt, dass der Validator fehlgeschlagen ist.Also habe ich in meiner Unwissenheit ein Kriterium hinzugefügt weg (ich bin sicher, es sollte gehandhabt werden ausnahme oder so):

if ($this->uri->uri_string == '' || $this->uri->uri_string == 'XDEBUG_SESSION_START') {   ...  }

Wie kann ich das lösen?Übrigens, das wird versucht, meine zu lösen anderer Beitrag, den ich aktualisieren werde;schien am besten, dies diskret zu machen Frage.

Die "richtige" Lösung für dieses Problem ist:setzen $config['uri_protocol'] = "AUTO"; zu $config['uri_protocol'] = "PATH_INFO"; und $config['enable_query_strings'] = FALSE; zu $config['enable_query_strings'] = TRUE; in der Konfiguration.php (lesen Sie den Kommentar über diesen Einstellungen, sie sind sehr hilfreich)

Nach einem tieferen Blick auf Test.php Ich kann Ihnen sagen, dass Ihre Testdateien so benannt werden sollten:

%name%_%geben Sie%_test ein.php (wobei %type% Singular ist)

um es hier klarer zu machen, ein Beispiel:

wir haben eine Controller-Begrüßung in die Datei welcome eingefügt.PHP der Test für diesen Controller sollte benannt werden willkommen_controller_Test.php und unter Tests / Controllern gespeichert/

Test.das PHP-Skript versucht, die Testdatei und die getestete Datei automatisch zu laden.Aber meiner Meinung nach muss es korrigiert werden.

Ich habe die Funktionen get_loader_id und add_test wie folgt geändert

function get_loader_id($file, $type) {
   $loader_id = str_replace("_{$type}_test.php", "", basename($file));
   return $loader_id;
}
function add_test($file, &$test) {
   $implementation = '';
   if (preg_match('/_controller/', $file)) {
      $controller = get_loader_id($file, 'controller');
      $implementation = APPLICATION . 'controllers/' . $controller . '.php';
   } elseif (preg_match('/_model/', $file)) {
      $model = get_loader_id($file, 'model');
      $implementation = APPLICATION . 'models/' . $model . '_model.php';
   } elseif (preg_match('/_view/', $file)) {
      $view = get_loader_id($file, 'view');
      $implementation = APPLICATION . 'views/' . $view . '.php';
   } elseif (preg_match('/_helper/', $file)) {
      $helper = get_loader_id($file, 'helper');
      $implementation = APPLICATION . 'helpers/' . $helper . '.php';
   } elseif (preg_match('/_library/', $file)) {
      $library = get_loader_id($file, 'library');
      $implementation = APPLICATION . 'libraries/' . $library . '.php';
   }
   if (file_exists($implementation)) {
      require_once ($implementation);
   }
   $test->addFile($file);
}

wenn Sie die Dateinamenkonventionen befolgen, sollten alle einwandfrei funktionieren (ich habe es auf einem MacBook mit Zend Server ce, xdebug, Simpletest und Netbeans 6.9 getestet.)

Andere Tipps

Wenn Sie, was Sie laden möchten, eine Ansicht ist, haben Sie versucht, den generationspflichtigen Code verwenden zu können?

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