PHPUnitでLaravelアプリケーションの基本単位テストを実行しようとしています。Laravel:すべてのPHPUnitが404を引き起こします
しかし、すべてのHTTPリクエストは404のHTTPステータスコードを返しません。したがって、最初のハードルで失敗しています。
インターネットをトロールした後、私はこの問題を解決する方法についての情報を発見したが、これらのこれまでのところどれも実際に動作しない:
- は、私が正しい名前のルートを参照しましチェック。
- このルートにコントローラメソッドがあることを確認してください。
- ブラウザで動作することを確認します。私は、HTTPレスポンスを得るために、私のユニットテストメソッド内からさまざまな方法を試してみた
TestCase::$baseUrl
、Config->app->url
...そのセットhttp://localhost/myappfolder
- に:私は自分のアプリケーションのURLがすべて正しい場所に正しく設定されていることを確実にしました
- オブジェクト。これまでのところすべてが404:
$this->route()
,$this->action()
、$this->call()
となりました。 - 私はコントローラからルート保護ミドルウェアへの参照をすべて削除しようとしました。私は単体テストを実行しているときは無効になっていると信じていますが、私はこの問題を診断しようとしている私の目立つ髪の毛を引っ張っています。無効。
- 私のアプリケーションのルーツファイルには、より小さなルートファイルを含む複数のPHP
require
があります。 Taylor Otwellはこれまでに、このようなルートファイルがrequire_once
を含むと、これらの404エラーを引き起こす可能性があると言いました。彼はrequire
に変更することを提案しています。いくつかの開発者は、これで修正されたと報告していますが、私の場合はrequire
となっています。とにかくメインルートファイルにルートを戻してみましたが、これはどちらもうまくいきませんでした。
調査は、通常、珍しいされています
- 私はそれが生成するURLをプリントアウトする
Illuminate\Foundation\Testing\Concerns
内route()
メソッドを編集した場合、それは完全に形成され、実際にある:http://localhost/myprojectfolder/route-url-text
。ブラウザでこのページを訪れても問題ありません。 cURLで訪問することもできます。生成されたURLに$this->call()
を実行すると、PHPUnitを実行すると再び404が表示されます。だからPHPUnitはちょっと変わったことをしています。ここで
私はユニットテストスクリプトで使用しているコードです:誰かが光を当てることができれば
public function testThis()
{
$response = $this->route('GET', 'myRouteName', [
'myParam' => 5
]);
dd($response->status()); // 404 - always!
}
その何かにステッピングと明示的に404を投げがあるように...本当にお願い申し上げますこれに。
これは不思議そうですが、後で別のルートを直接呼び出すとどうなりますか?あなたは200を得ますか?私は過去に同様の問題がありましたが、決して解決策を見つけることはありません – Aron
それは奇妙に思えます...しかし、私は提案を感謝します。私はいくつかの要求を連続して入れました。 404を手に入れてください。 – kohloth
ああ申し訳ありませんが、私はもっと助けになることはできません。この問題をlaracastフォーラムにも投稿する価値があります – Aron