2016-03-25 8 views
1

私は会社に勤めています。私は迷惑メールボックスでPHPUnitテストを実行する方法を知っています。しかし、なぜ私はシェフを使って構成された迷路の箱でテストを実行できないのか分かりません。私は、エラーの下に取得しています、PHPUnitコマンドを実行しているときはいつも:PHPUnitを使用して迷惑メールボックスのテストを実行できません

There was 1 failure: 

1) ExampleTest::testBasicExample 
A request to [en/contact] failed. Received status code [404]. 

/..../vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithPages.php:178 
/..../vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithPages.php:72 
/..../vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithPages.php:53 
/..../tests/ExampleTest.php:16 

Caused by 
ErrorException: Cannot modify header information - headers already sent by (output started at /..../vendor/phpunit/phpunit/src/Util/Printer.php:133) in /..../app/Http/Middleware/SetCookieData.php:17 

すべてのヘルプは非常にかなりの量になります。

答えて

2

あなたのテストは正常に動作しています。あなたのサンプルテストでは、visit('en/contact')を呼び出しました。それはそのURLを訪問しようとしましたが、200の代わりに404があります。あなたが見ているディスプレイは、そのURLを訪問しようとしたテストの結果です。

app/Http/Middleware/SetCookieData.phpのコードが(header()関数を使用して)ヘッダーを修正しようとしていますが、PHPUnitはすでにSTDOUTに出力を書き込んでいます。したがって、PHPは、出力を書き込んだ後にヘッダを修正しようとしているというエラーを投げています。 --stderrオプションで

  1. 実行PHPUnitのを(またはあなたのphpunit.xmlstderr="true"を追加):

    は、[1] [2] [3]はすでにこの問題のために、しかし、ここで要約するカップルの答えがあります。このようにして、PHPUnitはSTDERRに書き込むので、PHPは既にSTDOUTに書き込んだことに不満はありません。これはおそらく最も簡単なオプションです。

  2. あなたのテストに@runInSeparateProcess注釈を使用して試してみてください。しかし、フレームワークの複雑さのために問題にぶつかる可能性があります。さらに、この注釈を必要とする多くのテストがあり、それはリソースを大量に消費することになります。

    /** 
    * @runInSeparateProcess 
    */ 
    public function testBasicExample() 
    { 
        // visit('en/contact'); 
    } 
    
  3. 実行--process-isolationフラグをPHPUnitの(またはあなたのphpunit.xmlprocessIsolation="true"を追加します)。 @runInSeparateProcessアノテーションと同じ問題が考えられます。

  4. 実際にヘッダーを送信しないように、header()機能を組み込んでください。しかし、これによってページの反応が変わる可能性があるため、テストコードを書く必要があります。

参考文献:

+0

しかし、ページはすぐそこです。私はURLを閲覧することができます。なぜその404エラーが私の質問です。 –

+0

@WilliamFrancisGomes私は自分の答えを更新しました。 – patricus

+0

ありがとうございます。確認してお知らせします。 –

関連する問題