如何在Laravel功能测试中设置请求Cookie?解决方法详解

在进行Laravel功能测试时,通常我们会使用$this->postJson()系列方法来测试接口。一般情况下,通过$this->actingAs()方法即可解决登录状态的问题。然而,某些特殊情况下,我们需要向cookie中添加token以保持登录状态。

一开始,我尝试了以下代码:

$header = ['Set-Cookie: token=abc123'];

但发现这并不能实现预期的效果。于是我尝试了另一种方式:

$header = ['Set-Cookie' => 'token=abc123'];

不过,这次也没有成功。只能进一步阅读源码,在Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php的522行找到了以下代码片段:

return $this->call(
    $method,
    $uri,
    [],
    $this->prepareCookiesForJsonRequest(),
    $files,
    $this->transformHeadersToServerVars($headers),
    $content
);

倒数第二个参数引起了我的注意,transformHeadersToServerVars()?原来,$header最终会被转换为$_SERVER中的数据。这样的话,使用它来传递cookie是行不通的。

接着,我注意到第四个参数prepareCookiesForJsonRequest()。跟踪进去后发现,该方法会判断属性$this->withCredentials是否为true,如果不是则返回空数组。而这个属性默认值为false。

为了解决传递cookie的问题,我需要将$this->withCredentials设置为true。通过调用withCredentials()方法可以实现:

$this->withCredentials();

传递cookie的问题解决了,但是如何设置cookie呢?接下来,我直接在这个类中搜索关键词"cookie",很快就找到了withUnencryptedCookie()方法。由于项目并没有使用Laravel自带的cookie加密功能,所以我决定使用该方法来设置cookie。

最后一次尝试,果然实现了我想要的效果:

$this->withUnencryptedCookie('cookie_name', $cookieValue)
    ->withCredentials();

通过以上步骤,我们成功地在Laravel功能测试中设置了请求的cookie。使用withUnencryptedCookie()方法设置cookie的名称和值,同时调用withCredentials()方法设置属性$this->withCredentials为true,即可实现预期的效果。

希望这篇文章对你在Laravel功能测试中设置请求cookie时有所帮助!文章来源地址https://www.toymoban.com/diary/laravel/569.html

到此这篇关于如何在Laravel功能测试中设置请求Cookie?解决方法详解的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/laravel/569.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
如何解决Software caused connection abort报错
上一篇 2023年12月04日 16:26
在 Linux 上部署 HBase 的详细配置过程
下一篇 2023年12月04日 16:54

相关文章

  • 如何区分接口测试和功能测试

    接口测试和功能测试的区别: 2023最新Jmeter接口测试从入门到精通(全套项目实战教程) 本文主要分为两个部分: 第一部分: 主要从问题出发,引入接口测试的相关内容并与前端测试进行简单对比,总结两者之前的区别与联系。但该部分只交代了怎么做和如何做?并没有解

    2024年02月15日
    浏览(52)
  • 软件测试之语音识别功能如何测试?

    语音识别功能的测试需要考虑以下几个方面: 1. 语音输入测试 测试语音识别系统能否准确识别用户的语音输入。这包括测试系统对各种不同语言、方言和口音的理解能力,以及对不同声音质量和噪音环境的鲁棒性测试。 2. 语义理解测试 测试语音识别系统能否准确解析和理解

    2024年02月16日
    浏览(57)
  • 软件测试-功能测试-测试流程-如何进行需求评审?对于测试人员来讲,如何从测试的角度评审需求文档?

    产品人员编写的需求文档,无疑是一个项目或者一项新功能的开端。需求文档的优劣,直接影响开发人员的代码质量,更会影响到后续的测试工作。所以,我认为,需求评审对于开发质量以及测试质量至关重要,那么,如何做好一次优秀的评审,或者说,如何去评审一份需求

    2024年02月19日
    浏览(66)
  • 2023年,软件测试趋于饱和,如何从功能测试进阶到自动化测试?

    功能测试转成自动化测试,答案就三个字:“ 靠学习 ”。 学习自动化的方法无非是三种: 一、靠培训 在相对有氛围的学习环境中来学习自动化测试,这是一个较快学习的方法。 二、靠自学自动化教程(下方有视频资源推荐) 如果在职,不能全职学习,可以找一些自动化学

    2024年02月11日
    浏览(60)
  • 字节测试总监8年测试路,如何从功能测试转成自动化测试——愿测试人不再迷茫

    我大学学的计算机专业,有一点编程基础。我的软件测试职业开始和大多数测试人员一样,一开始在一家电商公司做软件功能测试。 大部分进入测试行业的朋友,最开始接触都是纯功能界面测试,随着工作年限,会接触到一些常用测试工具,比如抓包,数据库,linux等。 有人

    2023年04月17日
    浏览(55)
  • 7年从测试废物到测试主管,如何从纯功能测试内卷中破局?

    我大学学的计算机专业,有一点编程基础。我的软件测试职业开始和大多数测试人员一样,一开始在一家电商公司做软件功能测试。 大部分进入测试行业的朋友,最开始接触都是纯功能界面测试,随着工作年限,会接触到一些常用测试工具,比如抓包,数据库,linux等。 有人

    2024年02月04日
    浏览(47)
  • 功能测试进阶自动化测试如何摸清学习方向,少走弯路呢?

    目录 抛开疑问,只做学术探讨 小白在想什么? 盖楼之前先打好地基,首先需要学习一门语言 语言入门后,正式踏上开始自动化成神之路,入门篇Selenium 玩腻了Selenium 开始接触自动化框架unittest/testNG 不满足于单元测试框架的功能 学习自动化框架 初始接口测试 尝试学习Requ

    2024年02月13日
    浏览(68)
  • ​无需测试环境!如何利用测试脚手架隔离微服务,实现功能自动化

    想在不建立完整测试环境的情况下测试微服务? 想在将变更推送到主线分支之前完成测试? 这是我们在进行项目交付时经常遇到的难题。最近,当我们开始一个新的项目,为客户构建一个新的聚合平台时,我们希望将尽可能多的测试和自动化转移到流程的合并前执行。 我们

    2024年02月10日
    浏览(71)
  • 3-5年以上的功能测试如何进阶自动化?【附学习路线】

    做为功能测试人员来讲,从发展方向上可分两个方面 : 1、业务流程方向 2、专业技能方向。 当确定好方向后,接下来就是如何达到了。(文末自动化测试学习资料分享) 1、熟悉底层的业务 作为功能测试工程师来讲,了解开发的框架、开发的业务设计流程以及数据库的底层结

    2023年04月19日
    浏览(55)
  • 4个月自学软件测试面进阿里,如何从功能测试转成自动化...我经历了什么

    各大招聘网站,测试工程师月薪一万以上基本都有一个必备技能,那就是自动化测试。那么自动化测试到底难不难呢?下面我将会将我的经历讲给大家听,希望听完后,大家会有自己的一个判断。 不知不觉,入行软件测试也有小8个年头。待过创业公司也待过上市公司。做过

    2024年02月05日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包