我想测试一个 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.
我想我在设置害虫时错过了一些东西。请给我一个提示。谢谢:)
我希望客户在测试中像在修补匠中一样工作
错误消息“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 缓存:清除