Laravel menyediakan mekanisme perlindungan untuk suite ujian anda yang menangkap dan melemparkan pengecualian apabila permintaan HTTP luaran tidak diabaikan dengan betul. Ini membantu memastikan ujian anda tetap terpencil, boleh diramal, dan tidak bergantung pada perkhidmatan luaran. preventStrayRequests
use Illuminate\Support\Facades\Http; // 启用对未模拟请求的保护 Http::preventStrayRequests(); // 设置模拟响应 Http::fake([ 'example.com/*' => Http::response(['data' => 'example'], 200) ]);
<?php namespace Tests\Feature; use Tests\TestCase; use App\Services\WeatherService; use Illuminate\Support\Facades\Http; class WeatherServiceTest extends TestCase { protected function setUp(): void { parent::setUp(); // 防止任何未模拟的 HTTP 请求 Http::preventStrayRequests(); // 配置模拟响应 Http::fake([ 'api.weather.com/current*' => Http::response([ 'temperature' => 72, 'conditions' => 'Sunny', 'humidity' => 45 ]), 'api.weather.com/forecast*' => Http::response([ 'daily' => [ ['day' => 'Monday', 'high' => 75, 'low' => 60], ['day' => 'Tuesday', 'high' => 80, 'low' => 65] ] ]), // 捕获任何其他请求并返回错误 '*' => Http::response('Unexpected request', 500) ]); } public function test_gets_current_weather() { $service = new WeatherService(); $weather = $service->getCurrentWeather('New York'); $this->assertEquals(72, $weather['temperature']); $this->assertEquals('Sunny', $weather['conditions']); } public function test_gets_weather_forecast() { $service = new WeatherService(); $forecast = $service->getForecast('Chicago'); $this->assertCount(2, $forecast['daily']); $this->assertEquals('Monday', $forecast['daily'][0]['day']); } }
Atas ialah kandungan terperinci Tangkap permintaan HTTP yang tidak diingini dalam ujian Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!