session_regenerate_id() - 已在单元测试 Yii 控制器中发送的标头

2024-01-10

我正在尝试对我的控制器(Yii 框架)进行单元测试。

/** 
   * @dataProvider provider
   */
  public function testActionEdit_view_login($controller){
    $user = new CWebUser;
    $user->id = 978;
    $identity = new UserIdentity('[email protected] /cdn-cgi/l/email-protection', '123456');
    $user->login($identity);
    $controller->actionEdit();

    $output = ob_get_contents();
    assertContains('Add/Change Profile Picture:', $output);
    assertContains('bio', $output);
    assertContains('specialties', $output);
    assertContains('change login', $output);
    assertContains('New Password', $output);
  }

当我做

$user->login($identity);

为了登录,我收到以下错误:

session_regenerate_id(): Cannot regenerate session id - headers already sent

我已经尝试通过将其放在类的开头来缓冲输出:

public static function setUpBeforeClass(){
  ob_start();
}

我还将ob_clean()放在setUp()中,将ob_end_clean()放在tearDownAfterClass()中。

我仍然收到标头已发送的消息。文件中没有空格或换行符,当我注释掉具体的测试方法时,它工作得很好。 login() 似乎导致了这个问题。

有人知道如何防止这种情况/也许对控制器进行不同的单元测试吗?

谢谢, B先生


在您致电之前$user->login,添加以下代码:

$mockSession = $this->getMock('CHttpSession', array('regenerateID'));
Yii::app()->setComponent('session', $mockSession);

这会覆盖regenerateID方法与不执行任何操作的方法。

Adding ob_start()引导程序也可以工作,但是在一切完成之前 PHPUnit 没有输出。

使用这种方法,您仍然可以看到正在发生的进度。

我从 Yii 1.1.7 升级到 1.1.10 并且regenerateID方法是在1.1.8中添加的,所以今天我得到了这个错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

session_regenerate_id() - 已在单元测试 Yii 控制器中发送的标头 的相关文章

  • Yii:按条件进行多重排序

    我正在使用 CActiveDataprovider 显示来自不同表的数据 现在我遇到了一个问题 我有两个表 项目和类别 它们都有priority order 列 我需要使用这两个列的顺序来显示数据 例如 有两个类别和属于这些类别的六个项目
  • 使用 CDI+JSF 使会话失效不起作用

    我正在尝试在我的应用程序中实现注销 所以我这样做了 public String logout try FacesContext facesContext FacesContext getCurrentInstance ExternalCon
  • 会话过期后如何重定向到登录页面?

    我有三个 JSF 2 0 Web 模块 当会话过期时我需要重定向到登录页面 我已经尝试过使用HttpSessionListener 它正在调用sessionDestroyed 事件方法 但我无法在那里转发 重定向请求 我认为这是因为没有Ht
  • 如何在 Yii 中设置 returnUrl 值

    我正在使用 Yii 我遇到的问题是Yii app gt user gt returnUrl 它总是让我回到index php page 由于我不知道用户从哪个页面访问了当前页面 如何将其值设置为请求当前页面的页面 您可以使用Yii app
  • 使用 ASP.NET 2.0 处理过期会话的最有效方法是什么

    在我们正在建设的网站上 当用户的会话结束时 我们需要能够将用户重定向到默认页面 乍一看 我们使用 Session End 和 Response Redirect 来完成这项工作 Sub Session End ByVal sender As
  • PHP session.cookie_secure:设置为 true 时禁用会话

    当我设置以下配置时 ini set session cookie secure 1 我的整个应用程序的会话被禁用 我无法再写入或读取会话变量 sessionName us session name sessionName ini set s
  • REST - 复杂的应用程序

    我正在努力将 RESTful 原则应用到我正在开发的新 Web 应用程序中 特别是 为了实现 RESTful 每个 HTTP 请求本身都应该携带足够的信息 以便其接收者对其进行处理 从而与 HTTP 的无状态性质完全一致 该应用程序允许用户
  • session_regenerate_id 没有创建新的会话 id

    我有一个脚本 旨在完成当前会话并开始新的会话 我使用了一段代码 它在我的开发计算机上运行良好 但是 当我将其发布到生产服务器时 会话 ID 始终保持不变 以下是我重新启动会话的代码 session start SESSION array P
  • 休眠会话已关闭

    当我调用方法 session begin 事务时 如下所示 session factory is instantiated via a bean Session session this getSessionFactory getCurre
  • 将数据库中的用户 ID 添加到 Codeigniter 中的会话数据中?

    我是 CodeIgniter 的新手 在从数据库添加用户 ID 用户登录后 到会话数据时遇到问题 这是我的代码问题 之前可能会在 SOF 上被问到 在付出了所有努力之后 我问这个 登录模型
  • Spring Boot,Websockets无法从Session获取用户(即java.security.Principal)

    与 一起工作Spring Boot 1 2 1 RELEASE and Spring Websockets 运行嵌入式时存在部署运行时问题Jetty 9 我不能伪造用户 java security Principal 当应用程序部署在本地主
  • 检测 ASP.NET MVC 上的会话过期

    我构建了一个购物车 它使用会话状态在用户浏览商店时保留购物车数据 我遇到一个问题 如果我在购物车的第 1 步上长时间打开浏览器窗口 然后按 转到第 2 步 我的操作会引发错误 因为第 2 步操作假定会话尚未过期并且ShopCart 对象处于
  • MVP - 演示者应该使用 Session 吗?

    我正在为网页使用模型 视图 演示者模式 演示者应该知道会话还是应该只有视图知道它 我想我的意思是像会话这样的概念与视图的体系结构非常相关 所以它们应该仅限于视图使用吗 否则 如果我想在不同架构的类似页面上重用演示者 会发生什么 或者我不需要
  • 在 Yii 的标准中如何获得计数 (*)

    我正在尝试构建一个具有以下内容的查询group by属性 我正在尝试得到id和count它一直告诉我count is invalid列名 我怎样才能得到count来自group by询问 工作有别名 伊伊 1 1 11 其他不及格 crit
  • Node + Express 会话过期?

    我有一个 Express 应用程序 并且有一个登录表单 我需要持续 1 个月的会话 我是否将 maxAge 设置为一个月 以毫秒为单位 我让两台计算机保持打开状态并登录了 24 小时 当我回来时 两台计算机都已注销 我该如何解决这个问题 实
  • ASP.NET 会话状态服务器与 InProc 会话

    运行会话状态服务器而不是 InProc 的开销性能损失是多少 重要吗 我知道您可以使用状态服务器重新启动 w3wp 并保留所有会话状态 这是相对于 InProc 的唯一优势吗 这取决于您的部署计划 在单个服务器上 损失很小 但好处同样有限
  • 查明具有特定 ID 的会话是否已过期

    我正在创建一个上传功能 将用户上传的文件存储在服务器上 并以用户的会话 ID 作为名称 现在 我只想将此文件保留在服务器上 直到该会话处于活动状态 所以 我的问题是 如何根据会话 ID 确定会话是活动的还是过期的 以便在后一种情况下我可以安
  • Yii urlManager URL 中的语言

    我正在尝试使用以下语法向 url 添加语言 http www example com en site page view about http www example com en site page view about 到目前为止 我所
  • 使用 python3 和请求登录 Twitter

    我正在开发一个项目 要求使用用户名和密码登录网站 我必须在 python 中执行此操作 然后才能访问只有登录人员才能访问的网站部分 我尝试了几种编码变体来执行此操作 但无法成功登录然而 这是我的编码 登录它的功能 def 会话2 url r
  • 当SESSION_COOKIE_SECURE = True时如何在HTTP中获取一些用户身份信息

    以下是我正在开发的网站的简短描述 公共页面可以通过 HTTP 或 HTTPS 访问 其他一些页面 认证页面 账户详情页面等 需要通过HTTPS访问 Apache2 负责进行相关的 HTTP 到 HTTPS 链接重定向 我使用标准 Djang

随机推荐

  • Android - 双击WebView检测

    我正在创建一个带有 WebView 和页面顶部菜单的应用程序 我使该菜单不可见 并且仅在单击按钮时才会出现 这工作正常 但该按钮无法很好地适应任何地方 因此我没有单击按钮 而是在双击屏幕时出现菜单 所以问题就在这里 双击仅适用于空白区域 但
  • 除了 Haxe 之外,还有其他针对 PHP 的编程语言吗?

    PHP 并没有得到太多的喜爱 但在易于部署 对于廉价托管 方面仍然是赢家 有没有任何编程语言 除了Haxe http haxe org 那个目标 PHP 用这种语言编写应用程序 然后将其翻译成 PHP 就像某些语言以 C 作为中间语言一样
  • 如何使用 NHibernate 插入或更新(或覆盖)记录?

    我需要将一行写入数据库 无论它是否已经存在 在使用 NHibernate 之前 这是通过存储过程完成的 该过程将尝试更新 如果没有行被修改 它将回退到插入 这很有效 因为应用程序并不关心记录是否存在 对于 NHibernate 我发现的解决
  • 如何访问 Galaxy S5 心率传感器?

    In the 三星的编程指南 http img developer samsung com contents cmm SHealth SDK Package ProgrammingGuide 2 Bio Physiology eng v1
  • 如何使用数组包含元素创建 NSPredicate

    我只是有Address有财产的实体favourites类型的 String Address objc Address class Address NSManagedObject Observer NSManaged var favourit
  • 在反应中一次导入多个图像文件的任何简单方法

    我输入以下内容来导入图像 需要一个简短的方法来做到这一点 import banner1 from imgs Banners banner1 jpg import banner2 from imgs Banners banner2 jpg i
  • 通过提升业力重用已解析的变量

    我有一个与下面的代码相当的代码库 我尝试生成一个文本文件 其内容是变量的两倍 我觉得答案在于语义动作以及 a 和 val 但即使有文档也无法完成 您将如何做才能拥有 str 中的 toto 和输出 托托一些东西托托 即如何在业力中重用已解析
  • 检测设备是否正在充电

    我找不到任何明确的用途我最喜欢的工具 http www google com 不过我想我会把它放在这里 有没有办法使用 iPhone SDK 让应用程序检测设备是否处于通电状态 充电 底座等 如果设备正在通电 否则它是用户指定的设置 我希望
  • Rails 迁移变更列

    We have script generate migration add fieldname to tablename fieldname datatype用于向模型添加新列的语法 在同一行上 我们是否有一个脚本 生成来更改列的数据类型
  • timessince 过滤器的格式

    有没有办法使用 date timesince 过滤器 但不是有两个相邻的单元 而是只显示一个 例如 我的模板当前显示 18 小时 16 分钟 我怎样才能让它显示 18小时 这里不考虑四舍五入 谢谢 我想不出一个简单的内置方法来做到这一点 这
  • JavaScript 如何创建稀疏数组?

    虽然我不知道这个功能的名称 a a 57 test console log a length console log a 57 console log a 我很敬畏这是可能的 由于具有 C 背景 这种行为与分配内存之类的行为非常不同 那么几
  • Elasticsearch-Kibana docker-compose - 禁止使用“elastic”值

    我想使用 docker compose 运行 elasticsearch 和 kibana 这是我的 docker compose yml 我使用 docker compose env file dev env up 运行 Docker 组
  • 如何运行 NDK 示例?

    很抱歉问这样一个菜鸟问题 但是 NDK 文档是错误的 r7b 如果您使用 ADT 在 Eclipse 中进行开发 请使用新建项目向导 使用 导入 为每个示例创建一个新的 Android 项目 从现有源 选项并从以下位置导入源
  • 如何在 CMake 中检查列表是否包含特定条目?

    我想检查列表是否包含特定条目 如以下代码片段所示 macro foo if ARGN contains bar endif endmacro CMake 不提供contains 获得所需结果的最佳 最简单方法是什么 在CMake的wiki
  • 如何在 UWP 应用中隐藏/折叠标题栏?

    有没有办法以某种方式隐藏 折叠 使 UWP 应用程序中的标题栏暂时不可见 但不能完全禁用 我知道可以使应用程序全屏显示 然后标题栏自动折叠 但我需要在可调整大小的桌面窗口中实现它 我还知道您可以自定义标题栏的外观 例如颜色等 原因 我的应用
  • CMSIS & STM32,如何开始? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在 STM32 上使用 CMSIS 启动项目 网上一搜 没找到具体的教程 有些使用 SPL 开始项
  • 结构化流Kafka 2.1->Zeppelin 0.8->Spark 2.4:spark不使用jar

    我有一个 Kafka 2 1 消息代理 想要对 Spark 2 4 中的消息数据进行一些处理 我想使用 Zeppelin 0 8 1 笔记本进行快速原型设计 我下载了结构化流所需的spark streaming kafka 0 10 2 1
  • 使 Eclipse equals() / hashCode() 使用 getters

    是否可以使默认的 Eclipse 生成 hashCode 和 equals 使用 getters 而不是字段引用 IE 我可以获取它使用的模板吗 我正在使用 Hibernate 代理对象仅在使用 getter 时才 LazyLoaded 而
  • 如何在 PyQt 中获取按钮或标签(QPushButton、QLabel)的背景颜色

    我对 PyQt 还很陌生 有谁告诉我如何在 PyQt 中获取按钮或标签 QPushButton QLabel 的背景颜色 这是示例代码 这会对你有所帮助 QPushButton button1 button2 button1 setStyl
  • session_regenerate_id() - 已在单元测试 Yii 控制器中发送的标头

    我正在尝试对我的控制器 Yii 框架 进行单元测试 dataProvider provider public function testActionEdit view login controller user new CWebUser u