2012-03-25 11 views
1

Kohana 3.2でユニットテストを正しく設定する際に問題があります。KohanaでPHPUnitを実行しているときのリクエストを抑制する3.2

PHPUnitをインストールしました。私はKohanaのunittestモジュールを起動するためにブートストラップを変更しました。私はindex.phpファイルを次のように変更しました:

if (! defined('SUPPRESS_REQUEST')) 
{ 
    echo Request::factory() 
     ->execute() 
     ->send_headers() 
     ->body(); 
} 

私のアプリケーションフォルダにフォルダテストを作成しました。その中で、私はこのようになりますphpunit.xmlファイル挿入:

:私は2つの問題を抱えています

<phpunit colors="true" bootstrap="../../index.php"> 
<testsuites> 
    <testsuite name="Kohana Tests"> 
     <directory>./</directory> 
    </testsuite> 
</testsuites> 

を(最初のものは、私は本当に答えを必要とするものです) 1-コマンドラインからテストに入り、phpunitを実行しようとすると、SUPPRESS_REQUESTが決してtrueに設定されないようです。要求が実行されるため、テストは実行されません。テストを正常に実行できる唯一の方法は、index.phpのRequest :: factory()行全体を一時的にコメントアウトすることです。誰もがこの問題を回避する方法を知っていますか?どこかでdefine( 'SUPPRESS_REQUEST'、true)を追加する必要がある場合、どこでそれを行うべきですか?私はKohanaとPHPUnitを初めて使用しています。

2 PHPUnitは、変数REMOTE_ADDRが設定されていないと言っています。

PHP Notice: Undefined index: REMOTE_ADDR in 
/Users/**/Sites/root/application/bootstrap.php on line 76 

テストはまだこれにもかかわらずで実行するように見えるので、これは実際に今のところ大きな問題ではありませんが、私は特定のどこかに、この変数を設定する必要がある場合は誰もが知っている場合、私は思ったんだけど。

答えて

2

modules/unittestには、bootstrap.phpというファイルがあり、phpunitと完全によく動作します。そのブートストラップを参照

私phpunit.xmlはこれです:また

<?xml version="1.0" encoding="UTF-8"?> 
<phpunit colors="true" bootstrap="../../modules/unittest/bootstrap.php"> 
    <testsuites> 
     <testsuite name="Kohana Tests"> 
      <directory>./</directory> 
     </testsuite> 
    </testsuites> 
</phpunit> 

、REMOTE_ADDRの問題のため、PHPUnitは、私がREMOTE_ADDRへのアクセス権を持っているとは思わないPHPのCLIバージョンを、実行されている場合変数。 unittestからブートストラップを見ると、http関連のグローバルは使用されません。

あなたのブートストラップになぜRequest :: factoryコードを実行する必要があるのか​​わかりません。私のバニラ3.2のインストールでは、Request :: factoryコードはbootstrap.phpではなくindex.phpにあり、SUPRESS REQUESTへの参照はありません。クリーニングが必要な3.2より前のインストールのファイルが残っている可能性があります。

+0

本当にありがとうございました。私はindex.phpを指し示すと言っていたチュートリアルに従っていました(これは実際には私のRequest :: factoryが残念です。テスト用のブートストラップを指して、問題を解決しました! – Emilie

関連する問題