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');
}
}
再次,总是想想你真正想要测试的内容.你真的需要知道在哪个路由上触发哪个控制器动作?或者视图的名称被返回?实际上,您只需要确保控制器实际上尝试这样做.您传递一些数据,然后测试它是否按预期行为.
并且始终确保您不尝试测试任何框架功能,例如,如果特定路由触发特定操作或视图正确加载.这已经被测试了,所以你不需要担心.专注于您的应用程序的功能,而不是基础框架.
php 测试控制器,php – 控制器的Laravel单元测试相关推荐
- junit 测试mvc_Spring MVC控制器JUnit测试
junit 测试mvc JUnit测试Spring MVC控制器并非易事 . 但是最近,一个新项目 (即将在Spring推出)提供了新的工具来简化此工作. 这篇文章说明了如何通过JUnit测试来测试一 ...
- jmeter使用if控制器_Jmeter(七)_if控制器+循环控制器+计数器控制接口分支
最近查阅了一下网上关于if控制器的文章,大同小异,几乎找不到原创,于是决定自己写一篇 下午测试接口,遇到了一个审核的流程.逻辑很简单,就是审核不通过之后返回去继续修改再提交,然后再审核,直到通过为止. ...
- 测者的测试技术手册:AI的自动化单元测试
测者的测试技术手册:AI的自动化单元测试 谈新技术:AI的自动化单元测试 转载于:https://www.cnblogs.com/mrtester/p/10107939.html
- iOS:使用block进行类与类,控制器与控制器之间的传值
介绍:在iOS中类与类,控制器与控制器之间传值的方式有多种,分别是:单例传值.代理传值.通知传值.block传值或者一些偏好设置也可以用来传值.... 每一种传值方式都有各自的优点和缺点,针对不同情况 ...
- Asp.Net MVC控制器、控制器动作和动作结果
原文链接:http://www.asp.net/learn/mvc/ 这篇教程探索了ASP.NET MVC控制器(controller).控制器动作(controller action)和动作结果(a ...
- TwinCAT3之Ads通讯——1、控制器和控制器间通讯
目录 1 简介 2 硬件连接 3.工程和配置 3.1 Ads Mast主工程 3.2 创建从机工程 4 Ads主机中读写操作测试 4.1 Mast读操作 4.2 Mast写操作 1 简介 ADS通讯是 ...
- html5控制plc,技术领先|环境因素对WAGO可编程逻辑控制器PLC控制器的影响
可编程逻辑控制器于二十世纪六十年代初问世以来,在计算机.工业等方面,PLC控制器受到了极大的欢迎.更多的技术厂家都在关注着PLC控制器的现状和发展.想要在节约能源的前提下进一步发展可编程逻辑控制器显得 ...
- Jmeter 随机控制器-随机顺序控制器
随机控制器 随机逻辑控制器的行为与交替控制器相似,不同之处在于它不是按顺序执行其中的请求,而是每次执行时,在控制的请求中随机一个. 随机控制器中,每个线程每次循环时,可能调用其中的一个请求,调用一个请 ...
- JMeter分布式负载测试(吞吐量控制器)
在本节中,我们将学习如何使用吞吐量控制器在JMeter中创建分布式负载测试计划. 出于测试目的,我们将在我们网站 www.yiibai.com 的URL下的某些网页上创建分布式负载.这些网页包括: 主 ...
最新文章
- Linux centos7 NMAP网络探测工具安装过程以及使用示例!
- RHEL7 timedatectl命令
- Android配置build.gradle解锁更高逼格玩法(多版本共存、分服务器打包等)
- 最新最全的java多线程基础总结(上)
- Tomcat源码解析一:下载源码与导入eclipse
- 如何检测链表中是存在循环
- 10分钟做一个新闻问答web站点[iVX低代码实战]
- Linux 系统添加静态路由的方法
- 数字三角形(洛谷-P1118)
- Linux—JVM等性能调优监控
- php权限设置,php设置权限的方法
- STL_算法_元素计数(count、count_if)
- [七]JavaIO之 PipedInputStream 和 PipedInputStream
- 部署GitLab代码托管仓库
- marlin固件烧录教程_marlin固件中文(marlin固件下载)
- C# 使用NPIO 导出导出EXECL
- python-求m+mm+mmm+mmmm+ ...
- 四大开源3d游戏引擎探究(前言上)
- 用脑电波控制智能假肢:如何利用深度学习技术进行EGG数据分类
- FPGA实现DDRIP核配置(Memory Interface Solutions)
热门文章
- 1岁确诊脑瘫,“轮椅博士”,毕业了!
- ​【文末有福利】揭秘阿里中台!一文看懂阿里推荐业务的两项利器
- 最年轻图灵奖女性得主:谁说女的数学都比男的差
- 夜读丨72名研究生被清退:孩子,你前半生偷的懒,后半生得拼命还
- 丘成桐:年轻学者要敢于“无法无天”
- 平方变换法提取载波MATLAB,毕业设计(论文)MPSK信号的载波同步算法研究与仿真.doc...
- 图结构练习——最小生成树
- OpenTSDB 开发指南之 Grafana 展示OpenTSDB监控数据
- Flow vs Jenkins 实操对比,如何将Java应用快速发布至ECS
- 八种经典排序算法总结