为了账号安全,请及时绑定邮箱和手机立即绑定

如何测试发出http请求的方法?

如何测试发出http请求的方法?

PHP
慕雪6442864 2023-09-15 17:07:35
我正在 Laravel 中编写测试。但是,我遇到了麻烦,因为我不知道如何测试。有一种方法可以发出 http 请求,如下所示。您通常会如何测试此方法?我应该使用实际可访问的 URL 或模拟吗?PHP 7.4.6 Laravel 7.0<?phpnamespace App\Model;use Illuminate\Support\Facades\Http;use Exception;class Hoge{    public function getText(string $url, ?string $user, ?string $password, string $ua): bool    {        $header = ["User-Agent" => $ua];        $httpObject = $user && $password ? Http::withBasicAuth($user, $password)->withHeaders($header) : Http::withHeaders($header);        try {            $response = $httpObject->get($url);            if ($response->ok()) {                return $response->body();            }        } catch (Exception $e) {            return false;        }        return false;    }}
查看完整描述

3 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

扩展到其他系统的功能可能会很慢并且使测试变得脆弱。尽管如此,您还是希望确保您的getText方法按预期工作。我会做以下事情:

  • 专门为您的方法创建一组集成测试getText。这些测试向服务器发出实际的 http 请求以验证预期的行为。Web 服务器不必是外部系统。您可以使用 php 的内置网络服务器来提供测试 url。

  • 对于使用该getText方法的所有其他功能,我会模拟该方法以保持测试快速。


查看完整回答
反对 回复 2023-09-15
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

要创建新的测试用例,您可以使用make:testArtisan 命令:


php artisan make:test HogeTest

然后你可以创建你的 HogeTest,考虑到你的标题是正确的


<?php


namespace Tests\Feature;


use Tests\TestCase;


class HogeTest extends TestCase

{  

    public function hogeExample()

    {

        $header = ["User-Agent" => $ua];

        $response = $this->withHeaders([

            $header,

        ])->json('POST', $url, ['username' => $user, 'password' => $password]);


        $response->assertStatus(200);

      // you can even dump response

      $response->dump();

    }

}

这是一个简单的示例,您可以根据需要对其进行修改。


查看完整回答
反对 回复 2023-09-15
?
慕森卡

TA贡献1806条经验 获得超8个赞

我更喜欢使用 Postman 进行 Web 服务器/API 测试。


查看完整回答
反对 回复 2023-09-15
  • 3 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信