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中文網其他相關文章!