2013-07-20 12 views
11

以下に示すようにHTTP_HOSTを宣言しました。PHPUnitエラー "未定義インデックス:HTTP_HOST"

public function testReadUser() { 

    $_SERVER['HTTP_HOST'] = "x.y"; 
    . 
    . 
    . 
} 

これに感謝して、phpunitは未定義のインデックスエラーを返します。それはなぜです?

+0

あなたが得たすべてのエラーを投稿できますか? –

+1

"undefined index:HTTP_HOST"これが唯一のエラーステートメントでした。私はbootstrap.phpファイルを使って '$ _SERVER ['HTTP_HOST'] = 'myHost';'行を追加しました。これは問題を解決しました。私はbootstrap.phpファイルについてよく知らない。あなたはこのファイルの使用方法を簡単に教えてもらえますか?また、このファイルを通してgetとpostパラメータをテストファイルに渡すことはできますか? – Geek

+0

私はあなたに話すことができましたが、 "phpunit bootstrap"というグーグルでは関連性の高い結果が得られます。 –

答えて

3

テストトラフコマンドラインインターフェイス(CLI)を実行しているため、このエラーが発生します。 HTTP経由で要求が入っていないため、CLIはその情報を取得できません。

+0

しかし、それは '$ _SERVER'変数です。 – srain

+0

同じプロジェクトの別のテストファイルで同じ変数を同じ方法で使用します。私はnetbeansを使用してコマンドラインではありません。 – Geek

+1

マニュアルから: 'HTTP_HOST - 現在のリクエストからのHost:ヘッダの内容(もしあれば) '。つまり、そのようなヘッダーはありませんでした。そのヘッダーを送信するブラウザです。テストを実行するときに送信するようにネットビーンを設定します。これは実際のHTTPリクエストから読み込まれる情報です。クライアントがその情報を提供しない場合、PHPは$ _SERVER配列に上記のインデックスを作成しません。 – user2601913

23

phpunit.xmlファイルでは、サーバー変数を設定できます。 phpunitルートの下php要素を追加します。

<phpunit> 
    <php> 
     <server name='HTTP_HOST' value='http://localhost' /> 
    </php> 
</phpunit> 

詳細についてはthe docsを参照してください。

2

テストメソッドで値を宣言することができます(メソッドのテストで必要です)。例えば

function testMethod(){ 
$_SERVER['yourvar']='yourvalue'; 
...your code making the request via phpunit to the method you are testing 
} 

それはあなたがテストしている方法に利用できるようになりますあなたの試験方法で$ _SERVERを宣言することによって。これらの値を必要とする場合は、$ _POSTと$ _GETも同様に動作します。

関連する問題