2009-08-19 22 views
0

私はTDDでPHPを使用していて、Webベースのアプリケーションを作成してMySQLデータベースの記事にアクセスしています。PHP:__constructの文字列パラメータが正しく渡されない

class TestArticleTestCase extends UnitTestCase { 

... 

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

    ... 

} 

と、この文書クラスである:これはテスト機能である

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

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

} 

データベースの日付は、私が記事を初期化するものではなかったので、私は、コンストラクタでエコーを含めて、確かに、問題をトレース、これはコンストラクタでそのエコーの出力です:

pubDateUnchecked == 2005-06-01 12時00分00秒

たぶん私はこのコードをあまりにも長く見ていたかもしれませんが、どのように文字列をインスタンス化してどこから直接インスタンス化するかは、日付として操作し始める前に(私はそれが許容される日付形式後でstrtotime()とdate()を使って)。

誰に見えるかについてのアイデアはありますか?

ありがとう、 ステファン。

+0

本当ですか?私はこのコードで何か間違って見ることができません – knittl

答えて

0

多分キャッシュに問題がありますか?または、間違ったファイルを編集しましたか?以前に発生しました;-)
この場合、デバッガが役立ちます。しかし、あなたがインストールできない/インストールできない場合は、

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

そのテストコードVolkerKありがとう! ($ timestamp = strtotime($ pubDateUnchecked)=== false){ throw new Exception( 'pubDateが無効です。日付はたとえばYYYY-MM-DDでなければなりません。H:ミズ'); } \t "1970-01-01 02:00:00"を一貫して生成しました。 ()の課題を囲んで問題を解決しました。 Dankie! – gouwsmeister

関連する問題