Laravels preventStrayRequests
-Methode bietet einen Schutzmechanismus für Ihre Testsuite, der Ausnahmen fängt und auslöst, wenn eine externe HTTP -Anforderung nicht ordnungsgemäß verspottet wird. Dies trägt dazu bei, dass Ihre Tests isoliert und vorhersehbar bleiben und sich nicht auf externe Dienste verlassen.
Dieser Ansatz ist besonders nützlich in CI/CD-Umgebungen oder bei der Verwendung von APIs von Drittanbietern, da unerwartete Netzwerkaufrufe Tests verlangsamen oder zeitweise Fehler verursachen können.
use Illuminate\Support\Facades\Http; // 启用对未模拟请求的保护 Http::preventStrayRequests(); // 设置模拟响应 Http::fake([ 'example.com/*' => Http::response(['data' => 'example'], 200) ]);
Folgendes ist ein Beispiel für die Implementierung eines umfassenden API -Testschutzes:
<?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']); } }
Jede unerwartete HTTP -Anforderung, die nicht ordnungsgemäß verspottet wird, löst eine Ausnahme aus, mit der Sie eine zuverlässige Testsuite beibehalten können, die Ihren Anwendungscode wirklich von externen Abhängigkeiten isoliert.
Das obige ist der detaillierte Inhalt vonFangen Sie unbeabsichtigte HTTP -Anfragen in Laravel -Tests an. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!