php 测试控制器,php – 控制器的Laravel单元测试

好的,如已经在评论中已经解释了一点,我们先回退一下,再考虑一下这种情况.

“My first step is to check that the /login controller is called on the home url.”

所以这意味着:当用户点击主路由时,您需要检查用户是否登录,如果不是,您需要将其重定向到登录名,或许有一些Flash消息.登录后,您要将其重定向到主页.如果登录失败,您需要将它们重定向到登录表单,也可能使用Flash消息.

所以有几件事要测试:家用控制器和登录控制器.所以遵循TDD的精神,让我们先创建测试.

注意:我将遵循phpspec使用的一些命名约定,但不要让你烦恼.

class HomeControllerTest extends TestCase

{

/**

* @test

*/

public function it_redirects_to_login_if_user_is_not_authenticated()

{

Auth::shouldReceive('check')->once()->andReturn(false);

$response = $this->call('GET','home');

// Now we have several ways to go about this,choose the

// one you're most comfortable with.

// Check that you're redirecting to a specific controller action

// with a flash message

$this->assertRedirectedToAction(

'AuthenticationController@login',null,['flash_message']

);

// Only check that you're redirecting to a specific URI

$this->assertRedirectedTo('login');

// Just check that you don't get a 200 OK response.

$this->assertFalse($response->isOk());

// Make sure you've been redirected.

$this->assertTrue($response->isRedirection());

}

/**

* @test

*/

public function it_returns_home_page_if_user_is_authenticated()

{

Auth::shouldReceive('check')->once()->andReturn(true);

$this->call('GET','home');

$this->assertResponSEOk();

}

}

这就是家庭控制器.在大多数情况下,您实际上不在乎您被重定向到哪里,因为这可能会随时间而变化,您将不得不更改测试.所以至少应该做的是检查你是否被重定向,只有检查更多的细节,如果你真的认为这是重要的测试.

我们来看看认证控制器:

class AuthenticationControllerTest extends TestCase

{

/**

* @test

*/

public function it_shows_the_login_form()

{

$response = $this->call('GET','login');

$this->assertTrue($response->isOk());

// Even though the two lines above may be enough,// you could also check for something like this:

View::shouldReceive('make')->with('login');

}

/**

* @test

*/

public function it_redirects_back_to_form_if_login_fails()

{

$credentials = [

'email' => 'test@test.com','password' => 'secret',];

Auth::shouldReceive('attempt')

->once()

->with($credentials)

->andReturn(false);

$this->call('POST','login',$credentials);

$this->assertRedirectedToAction(

'AuthenticationController@login',['flash_message']

);

}

/**

* @test

*/

public function it_redirects_to_home_page_after_user_logs_in()

{

$credentials = [

'email' => 'test@test.com',];

Auth::shouldReceive('attempt')

->once()

->with($credentials)

->andReturn(true);

$this->call('POST',$credentials);

$this->assertRedirectedTo('home');

}

}

再次,总是想想你真正想要测试的内容.你真的需要知道在哪个路由上触发哪个控制器动作?或者视图的名称被返回?实际上,您只需要确保控制器实际上尝试这样做.您传递一些数据,然后测试它是否按预期行为.

并且始终确保您不尝试测试任何框架功能,例如,如果特定路由触发特定操作或视图正确加载.这已经被测试了,所以你不需要担心.专注于您的应用程序的功能,而不是基础框架.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI一体机高速自由流收费稽核解决方案

自2019年两会政府工作报告中明确“深化收费公路制度改革,两年内基本取消全国高速公路省界收费站,实现不停车快捷收费,减少拥堵,便利群众”政策以来,全国高速公路取消省界收费站的工作快速推进。在撤站实现开放式的收费…

重磅!大数据知识总结和调参技巧开放下载了

大数据被誉为“新石油”,如何管理并洞悉数据的价值,是企业未来发展的核心竞争力。进入大数据时代,数据规模与日俱增。另一方面,数据仓库的市场份额被其他技术蚕食,比如大数据、机器学习和人工智能。这种趋势给我们造成…

2020阿里云双12-企业飞天会员年终盛典全攻略

2020阿里云双12大促活动于12月09日正式开启,至12月31日结束。此次双12阿里云将有哪些亮点活动,此篇文章将一一为大家阐述。 今年阿里云双12将重点服务企业用户,在大促期间,企业实名认证用户可加入阿里云飞天会员,享受…

php查看是否启用opcache,php – 启用Opcache不工作

我正在尝试启用Opcache,但出于某种原因,在编辑我的php.ini文件并重新启动apache(甚至重新启动服务器)之后,它仍然没有启用.运行测试我可以看到php文件的位置:Loaded Configuration File /etc/php5/apache2/php.ini在该文件中,我添加了:zend_extension/us…

工商银行基于 Dubbo 构建金融微服务架构的实践-服务发现篇

作者 | 张远征来源|阿里巴巴云原生公众号 导读:Dubbo 作为分布式微服务框架,众多公司在实践中基于 Dubbo 进行分布式系统架构。重启开源后,我们不仅看到 Dubbo 3.0 最新的 Roadmap 发布,而且还看到阿里在自身电商开始推进 Dubbo 和…

Kubernetes 诞生七年,凭什么成为主流?

来源 | CSDN头图 | 付费下载于 IC photo引言作为一款开源的容器编排引擎,始于2014年的Kubernetes一经推出就受到了开发者的喜爱,在此之前,从来没有人想过能有一个同时被所有云供应商支持的分布式应用。在Kubernetes里,用户可以轻松…

贡献的 PR 数仅次于阿里团队,我是如何成为 Spring Cloud Alibaba committer 的?

Spring Cloud Alibaba 开源两年时间,已经成为了最受开发者关注、最活跃的 Spring Cloud 实现。它之所以能这么快的受到开发者的认可,一方面是它生态中的组件丰富且经过阿里 双11 验证,但更重要的还是社区中各位贡献者、广大用户的贡献和反馈。…

Php中跳转语句goto,phpgoto语句

php goto问题您好,goto操作符可以用来跳转到程序中的某一指定位置。该目标位置可以用目标名称 加上冒号来标记。PHP中的goto有一定限制,只能在同一个文件和作用域中跳转, 也就是说你无法跳出一个函数或类方法,也无法跳入到另一个函…

专访涯海:阿里云中间件是如何支撑双11的?

以下是本次访谈关键内容的整理。 点击这里可前往“2020阿里双11技术全观”专题查看访谈视频回放 播报员: *各位开发者朋友们,大家好。欢迎收看我们这一期的双11技术播报栏目,我是你们的播报员莫孤。今天我们依然还是双11技术播报的特别篇&a…

你和大厂的匹配度多高?立马去C认证测试一下,提前备考大厂

一年一度的秋招要开始了,又有人开始慌了。前段时间在技术沙龙群里跟同学们聊天,大家集体吐槽今年求职内卷的严重。投了很多简历却石沉大海,秋招快开始了自己却还毫无头绪,想去大厂但是完全不知道如何下手。在这样的焦虑情绪下&…

排查指南 | 当 mPaaS 小程序提示“应用更新错误(1001)”时

问题描述:APP 启动 mPaaS 小程序弹出 toast 信息:"应用更新错误"。 原因分析 调用MDS小程序更新接口之后,没有拉到对应的小程序信息,就会返回1001。 mPaaS 框架在打开一个小程序应用前,首先需要获知该小程…

oracle生成字母序号6,创建以字母数字开头的Oracle序列

只能创建整数值序列.所以声明必须是:CREATE SEQUENCE invoice_nunSTART WITH 1INCREMENT BY 1;您可以将获取的值转换为字符串并添加适当的前缀.select INV||to_char(invoice_nun.nextval,FM09999999)from dual;您可以创建一个函数来模拟返回适当字符串值的序列creat…

你想知道的容器混合云问题,答案都在这里!

作者:范桂飓来源:CSDN 博客前言今天笔者有幸受邀参加了亚马逊云科技中国峰会(上海站)的 “开发者之家《观点碰撞》” 活动,与诸位亚马逊云科技的技术专家们一同对话 “容器混合云会是未来的答案吗”?坦诚地…

ChaosBlade x SkyWalking 微服务高可用实践

来源|阿里巴巴云原生公众号 前言 在分布式系统架构下,服务组件繁多且服务间的依赖错综复杂,很难评估单个故障对整个系统的影响,而且请求链路长,如果监控告警、日志记录等基础服务不完善会造成故障响应、故障定位问题难&#xff…

如何实现用户通信授权的可信、可知、可追溯?——通信授权服务技术解读

目前,如何防治骚扰电话,保障呼叫中心市场绿色、健康的市场环境,是监管部门、企业和大众都非常关注的社会问题。在高频迭代的通信业务中,企业如何安全快速获取用户授权同意,同时保障用户体验?12月9日&#x…

安装oracle需要多少内存,针对大型内存配置的 Oracle VM 安装需要更多步骤 (7195262)...

将以下参数添加到所有标签中:dom0_memmax:128G(rescue 标签为 max:126G)编辑完成后,您的文件应如下所示:# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.default ksprompt 1timeout 30display boot.msgF1 b…

规范白盒生态 S³IP助力未来可预期服务网络

7月16日,由阿里、腾讯、百度、美团、京东、快手、中国信通院云大所联合推进的SIP规范化白盒生态项目在北京正式启动!项目旨在通过软硬件规范和开源,简化白盒交换机系统集成,从而促进开源网络白盒生态发展。 阿里云基础设施网络团…

阿里10年:一个普通技术人的成长之路

一 关于我 宋健,花名宋意,2008年开始参加工作,至今12年多一直专注在运维领域。2010年6月加入支付宝,做过监控、SRE、资源管理、运维产品等方面的工作,经历并参与了阿里运维从脚本到工具化再到自动智能化的演进过程&am…

米熊科技:给烘培加点“云”的味道

烘焙已经成为中国年轻消费者崇尚的潮流时尚和休闲减压的新选择,拥有巨大的市场发展空间。据Euromonitor International发布的报告显示,2020年中国烘焙食品市场规模预计达到2567亿元。 北京米熊科技发展有限公司(以下简称“米熊科技”&#xf…

oracle判断是否是手机号码,oracle判断手机号码是否合法

合法手机号码:都是11位数,并且以13、15、18开头的。create or replace function isLegal(phoneNumber in varchar2) return number--返回0表示是合法,返回1表示是不合法asbegin if length(phoneNumber) !11 then return 1; elsif repla…