用药中consolo命令行工具的测试方法

  介绍

小编给大家分享一个下用药中consolo命令行工具的测试方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

<强>引言

最近使用到laravel的consolo命令行工具,在编写命令,想写一些测试的时候,发现官方文档中并没有提到命令的测试方法。花了点时间,翻墙找了资料,实践成功并记录一下,方便更多的人。

<强>测试方法

大家都知道laravel中使用了很多Symfony的成熟组件,laravel的控制台组件使用的就是Symfony/控制台。

幸运的是,Symfony/控制台组件中提供了用于命令测试的CommandTester,使用方法如下

…   use  FooCommand;   use  Symfony \组件\ \控制台应用程序;   use  Symfony \控制台\ \组件测试仪\ CommandTester;   …   public  function  testSample () {   ,,,//创建一个控制台测试应用平台,用来搭载测试的命令   ,,,application 美元;=,new 应用程序();   ,,,,   ,,,//创建待测试的命令   ,,,testedCommand 美元;=,$ this→程序→使(FooCommand::类);   ,,,//设置命令执行需要的laravel依赖   ,,,美元testedCommand→setLaravel(应用程序());   ,,,//添加待测试的命令到测试应用的上   ,,,//同时command 也绑定,应用程序   ,,,美元应用程序→添加(testedCommand美元);   ,,,//实例化命令测试类   ,,,commandTester 美元;=,new  CommandTester ($ testedCommand);   ,,,//命令输入流,对应每次交互需要提供的输入内容   ,,,美元commandTester→setInputs ([   ,,,,,,,//?   ,,,,,,,);   ,,,//执行命令   ,,,美元commandTester→执行((& # 39;命令# 39;,=祝辞,美元testedCommand→getName ()));   ,,,//对命令执行结果进行断言测试,主要是依靠正则判断   ,,,//美元commandTester→getDisplay(),方法可以获取命令执行后的输出结果   ,,,这个→美元assertRegExp (“/some 注册/,,,美元commandTester→getDisplay ());   }

<>强示例

我们现在有一个手动创建新用户的命令createUser,作用就是手动创建一个用户。

需要交互式让用户输入的名字,电子邮件,密码,确认密码,这些数据。

<强>待测试的命令

& lt; php ?   namespace 应用\ \控制台命令;   use 应用\用户;   use 照亮\ \ Auth \事件注册;   use 照亮\ \控制台命令;   use 阐明\ \外墙\验证器的支持;   class  CreateUser  extends 命令   {   ,,,/* *   ,,,,*,从而name 以及signature  of 从而console 命令。   ,,,,   ,,,,*,@var 字符串   ,,,*/,,,protected  signature 美元;=,& # 39;createUser& # 39;;   ,,,/* *   ,,,,*,从而console  command 描述。   ,,,,   ,,,,*,@var 字符串   ,,,*/,,,protected  description 美元;=,& # 39;create  new  user  for  system 手动# 39;;   ,,,/* *   ,,,,*,Create  a  new  command 实例。   ,,,,   ,,,,*,@return 空白   ,,,*/,,,public  function  __construct ()   ,,,{   ,,,,,,,父母:__construct ();   ,,,}   ,,,/* *   ,,,,*,Execute 从而console 命令。   ,,,,   ,,,,*,@return 混合   ,,,*/,,,public  function 处理()   ,,,{   ,,,,,,,这个美元→线($ this→描述);   ,,,,,,,//,获取输入的数据   ,,,,,,,data 美元;=,(   ,,,,,,,,,,,& # 39;名字# 39;,=祝辞,$ this→问(& # 39;什么\ & # 39;s  your 名字? & # 39;),   ,,,,,,,,,,,& # 39;电子邮件,,=祝辞,$ this→问(& # 39;什么\ & # 39;s  your 电子邮件? & # 39;),   ,,,,,,,,,,,& # 39;密码# 39;,=祝辞,$ this→秘密(& # 39;什么\ & # 39;s  your 密码? & # 39;),   ,,,,,,,,,,,& # 39;password_confirmation& # 39;,=祝辞,$ this→秘密(& # 39;Pleas  confirm  your 密码# 39;公司)   ,,,,,,,);   ,,,,,,,//,验证输入内容   ,,,,,,,validator 美元;=,$ this→makeValidator(元数据);   ,,,,,,,if (验证器→美元失败()),{   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

用药中consolo命令行工具的测试方法