【问题标题】:How to fake cookie for HTTP fake respond?如何为 HTTP 虚假响应伪造 cookie?
【发布时间】:2022-07-05 06:13:14
【问题描述】:

我想在 Laravel 中使用 cookie 模拟 HTTP 响应。我试过这个:

Http::fake([
    'my-mocked-route' => Http::response(['foo' => 'bar'], 200)->withCookie('expires', 10),
]);

但我收到了

调用未定义的方法 GuzzleHttp\Promise\FulfilledPromise::withCookie()

如果我只使用cookie 而不是withCookie,也一样。

我也试过

Http::fake([
     
        'qnnect' => Http::response(['foo' => 'bar'], 200, ['Cookie' => 'expires=10;']),
    ]);

尽管响应的标头中包含正确的 cookie,$response->cookies() 返回一个空的 CookieJar。

是否有可能在响应中模拟 cookie?

【问题讨论】:

    标签: laravel cookies phpunit guzzle


    【解决方案1】:

    ->withCookies 是一种您可以在 Http::fake() 上使用而不是在 Http::response() 上使用的方法

    【讨论】:

    • 没错。我的问题是,如何将 cookie 数据添加到响应中。
    【解决方案2】:

    正确的标题是Set-Cookie 而不是Cookie。域也是必需的。

      Http::fake([
        'home' => Http::response('Ok', 200, ['Set-Cookie' => 'foo=bar; domain=.'])
      ]);
    
      $response = Http::get('home');
      dump($response->cookies()->getCookieByName('foo')->getValue());
    

    输出将是bar

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-13
      • 2015-07-13
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 2021-10-08
      相关资源
      最近更新 更多