首頁 > 後端開發 > php教程 > 簡化的HTTP響應在Laravel測試中模擬了

簡化的HTTP響應在Laravel測試中模擬了

Emily Anne Brown
發布: 2025-03-12 17:09:24
原創
491 人瀏覽過

Simplified HTTP Response Mocking in Laravel Tests

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显著减少了代码冗余,同时使您的测试模拟更直观。

基本实现提供了多种响应类型快捷方式:

use Illuminate\Support\Facades\Http;

Http::fake([
    'google.com' => 'Hello World',
    'github.com' => ['foo' => 'bar'],
    'forge.laravel.com' => 204,
]);
登入後複製

此语法在全面的测试场景中运行良好:

class ApiIntegrationTest extends TestCase
{
    public function test_service_communication()
    {
        Http::fake([
            // 字符串响应
            'api.notifications.com/*' => '消息已发送',

            // 数组响应(转换为 JSON)
            'api.products.com/*' => [
                'products' => [
                    ['id' => 1, 'name' => '笔记本电脑'],
                    ['id' => 2, 'name' => '手机']
                ]
            ],

            // 状态码响应
            'api.status.com/check' => 200,
            'api.deprecated.com/*' => 410,

            // 相关端点的不同响应类型
            'api.orders.com/active' => ['status' => '处理中'],
            'api.orders.com/error' => 400,
            'api.orders.com/message' => '系统不可用'
        ]);

        // 使用断言进行测试
        $response = Http::get('api.notifications.com/send');
        $this->assertEquals('消息已发送', $response->body());

        $products = Http::get('api.products.com/list');
        $this->assertCount(2, $products['products']);

        $status = Http::get('api.status.com/check');
        $this->assertTrue($status->successful());
    }
}
登入後複製

这种简洁的语法通过减少阅读测试时的认知负担来显著提高测试的可维护性,使您可以专注于业务逻辑而不是 HTTP 模拟细节。

以上是簡化的HTTP響應在Laravel測試中模擬了的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板