在(laravel)Pest-Test中找不到类“GuzzleHttp\HandlerStack”

问题描述 投票:0回答:1

我想测试一个 api 客户端。 api-client 使用 Illuminate\Support\Facades\Http 发出请求。当我在修补程序中使用它时一切正常:

> $response = Bitwarden::listItems()
= Illuminate\Support\Collection {#6782
    all: [
      {#6854
        +"object": "item",
       ....
      },
    ],
  }

我的测试如下:

it('can list the items', function () {
   $response = Bitwarden::listItems();
   expect($response)->toBeArray();
});

结果是

 FAILED  Tests\BitwardenCliTest > it can list the items                              Error   
  Class "GuzzleHttp\HandlerStack" not found

  at vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php:1145
    1141▕      * @return \GuzzleHttp\HandlerStack
    1142▕      */
    1143▕     public function buildHandlerStack()
    1144▕     {
  ➜ 1145▕         return $this->pushHandlers(HandlerStack::create($this->handler));
    1146▕     }
    1147▕ 
    1148▕     /**
    1149▕      * Add the necessary handlers to the given handler stack.

我想我在设置害虫时错过了一些东西。请给我一个提示。谢谢:)

我希望客户在测试中像在修补匠中一样工作

laravel guzzle pest
1个回答
-3
投票

错误消息“Class 'GuzzleHttp\HandlerStack' not found”通常表示 Laravel Pest 无法从 Guzzle HTTP 客户端库找到 HandlerStack 类。要解决此问题,您可以按照以下步骤操作:

安装 Guzzle HTTP 客户端:

确保您已将 Guzzle HTTP Client 作为依赖项安装在 Laravel 项目中。您可以使用 Composer 安装它:

作曲家需要 guzzlehttp/guzzle

确保您在composer.json 文件的require 部分中看到Guzzle。

检查 Composer 自动加载:

Laravel 应该通过 Composer 的自动加载自动加载 Guzzle HTTP 客户端。但是,运行 Composer dump-autoload 来刷新自动加载器是一个很好的做法:

作曲家转储自动加载

验证害虫配置:

验证您的 Pest 测试设置是否正确。确保您已在测试文件的开头导入 Pest:

使用 Pest\Testing\TestCase;

检查命名空间问题:

确保您为 Guzzle 和 Pest 使用正确的命名空间。您的测试文件应以 Pest 的命名空间声明开始,如果您在测试中使用 Guzzle,请确保正确导入它:

命名空间 Tests\Unit;

使用Pest\Testing\TestCase; 使用 GuzzleHttp\HandlerStack; // 确保这是导入的

// 这里是你的测试代码

更新 Pest 和 Laravel:

确保您使用的是最新版本的 Pest 和 Laravel。更新您的软件包:

作曲家更新

清除缓存:

有时,Laravel 的缓存可能会导致问题。清除您的配置缓存和其他缓存:

php artisan 配置:清除 php artisan 缓存:清除

© www.soinside.com 2019 - 2024. All rights reserved.