Rumah > pembangunan bahagian belakang > tutorial php > Tangkap permintaan HTTP yang tidak diingini dalam ujian Laravel

Tangkap permintaan HTTP yang tidak diingini dalam ujian Laravel

百草
Lepaskan: 2025-03-05 15:20:09
asal
813 orang telah melayarinya

Catch Unintended HTTP Requests in Laravel Tests

Kaedah

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

Pendekatan ini amat berguna dalam persekitaran CI/CD atau apabila menggunakan API pihak ketiga, kerana panggilan rangkaian yang tidak dijangka mungkin melambatkan ujian atau menyebabkan kegagalan sekejap.

use Illuminate\Support\Facades\Http;

// 启用对未模拟请求的保护
Http::preventStrayRequests();

// 设置模拟响应
Http::fake([
    'example.com/*' => Http::response(['data' => 'example'], 200)
]);
Salin selepas log masuk
Berikut adalah contoh bagaimana melaksanakan perlindungan ujian API yang komprehensif:

<?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']);
    }
}
Salin selepas log masuk
Mana -mana permintaan HTTP yang tidak dijangka yang tidak diabaikan dengan betul akan mencetuskan pengecualian, yang membantu anda mengekalkan suite ujian yang boleh dipercayai yang benar -benar mengasingkan kod aplikasi anda dari kebergantungan luaran.

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan