0

私は PHP で TDD を試しており、MySQL データベースの記事にアクセスするための Web ベースのアプリを作成しています。これはテスト関数です:

class TestArticleTestCase extends UnitTestCase {

...

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

    ...

}

これは Article クラスです:

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() 後で..)。

誰かがどこを見ればよいかについて何か考えがありますか?

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

4

1 に答える 1

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']); 
于 2009-08-19T10:51:17.413 に答える