2009-08-19 11 views
0

Ich versuche meine Hand bei TDD mit PHP und schreibe eine webbasierte App für den Zugriff auf Artikel in einer MySQL-Datenbank; dies ist die Testfunktion:PHP: String-Parameter zu __construct nicht korrekt übergeben

class TestArticleTestCase extends UnitTestCase { 

... 

public function testArticleGenerateInsertSqlString() { 
    $testArticle = new Article("12345", "2009-09-13 20:20:20", "Test heading", "Test text"); 

    ... 

} 

und das ist die Art Klasse:

class Article { 
    private $_articleId; 
    private $_pubDate; 
    private $_heading; 
    private $_text; 

    public function __construct($articleId, $pubDateUnchecked, $headingUnescaped, $textUnescaped) { 
     echo "pubDateUnchecked == $pubDateUnchecked </BR>"; 
      ... 

} 

ich das Echo in dem Konstruktor enthalten, da die Daten in der Datenbank nicht das war, was ich den Artikel mit, initialisiert und sicher genug, um das Problem Tracing, das ist der Ausgang dieses Echos im Konstruktor:

pubDateUnchecked == 2005-06-01 00.00.00

Vielleicht habe ich diesen Code nur zu lange angeguckt, aber wie kann ich die Zeichenfolge ändern, von wo ich sie instanziiere, wo sie instanziiert wird, BEVOR ich anfange, sie als Datum zu manipulieren (ich überprüfe, ob es ein zulässiges Datumsformat ist) mit strtotime() und date() später ..).

Hat jemand irgendwelche Ideen, wo Sie suchen?

Vielen Dank, Stephan.

+0

bist du sicher? Ich kann nichts falsch in diesem Code sehen – knittl

Antwort

0

Vielleicht ein Cache-Problem? Oder du hast die falsche Datei bearbeitet? Ist schon mal passiert ;-)
Ein Debugger wäre in diesem Fall hilfreich. Aber wenn Sie nicht haben/kann nicht versuchen, etwas wie

public function testArticleGenerateInsertSqlString() { 
    $testdata = array(
    array('articleId'=>"12345", 'pubDateUnchecked'=>"2009-09-13 20:20:20", 'headingUnescaped'=>"Test heading", 'textUnescaped'=>"Test text") 
); 
    echo '<div>Test. Now=', date('Y-m-d H:i:s'),' modtime(__FILE__)=', date('Y-m-d H:i:s', filemtime(__FILE__)), "</div>\n"; 
    foreach($testdata as $t) { 
    echo "<div>Test. new Article({$t['articleId']}, {$t['pubDateUnchecked']}, {$t['headingUnescaped']}, {$t['textUnescaped']})</div>"; 
    $testArticle = new Article($t['articleId'], $t['pubDateUnchecked'], $t['headingUnescaped'], $t['textUnescaped']); 
+0

Vielen Dank für diesen Test-Code Volkerk! Ich lief es und fand das Problem in der Zeile if ($ timestamp = strtotime ($ pubDateUnchecked) === false) { werfen neue Ausnahme ('Ungültige pubDate. Datum muss zB sein JJJJ-MM-DD H: FRAU'); } \t , die konsequent "1970-01-01 02:00:00" produziert. Umgeben der Zuordnung mit() ist das Problem gelöst .. Dankie! – gouwsmeister

Verwandte Themen