現在、PHP で記述された API の単体テストを作成しています。この API は、各リクエストの前に RateLimiting ステップを実装しているため、アプリケーションのテスト中はこのステップを回避したいと考えています。
ここで、テストをローカルで実行したい場合は、ローカル IP を確認するだけで済みます。これは "::1" です。しかし、継続的インテグレーション サーバーが提供する環境変数へのアクセスに問題があります (私はwerckerを使用しています)。
これを PHPUnit テストから実行すると、次のようになります。
var_export(isset($_SERVER["CI"]) || isset($_SERVER["wercker"]));
が得られますtrue
が、レート制限を適用する前に同様のことを行うと:
if (isset($_SERVER["CI"]) || $request->getIp() === "::1") {
return;
} else {//...
レート制限ロジックをスキップしないため、wercker テストは失敗し続けます。コードの最初の部分は PHPUnit のテストから実行され、2 番目の部分はサーバー アプリケーションの一部であることに注意してください。
環境変数で何が間違っていますか?
さらに情報やドキュメントを提供する必要がある場合はお知らせください。