热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHPUnit用于命令行集成测试-PHPUnitforcommandlineintegrationtests

Recently,IvestartedtoworkingonEmail2SMSfeatureinourproduct.WhenIjoinedtheprojectthi

Recently, I've started to working on Email2SMS feature in our product. When I joined the project this component had zero code coverage by unit-tests. Legacy code.

最近,我开始在我们的产品中使用Email2SMS功能。当我加入项目时,这个组件的单元测试代码覆盖率为零。遗留代码。

Since I started to working on it, I was using test-first approach. But code quality was very low. It was very hard to split it and tests small chunks by unit-tests, so I decided to write integration test.

自从我开始研究它以来,我一直在使用测试优先方法。但代码质量非常低。拆分它并通过单元测试测试小块是非常困难的,所以我决定编写集成测试。

There is php script, which accepts some message info, search for user in DB and save some info if everything is OK.

有php脚本,它接受一些消息信息,在DB中搜索用户并保存一些信息,如果一切正常。

$last_line = system('php emailtosms.php -file=unicode_message.txt ', $retval);

$this->assertStringExistsInLogFile('Email to SMS message was not sent');

Is it bad or not? How would you solve this problem?

这不好吗?你怎么解决这个问题?

1 个解决方案

#1


Not so good.

不太好。

Test at a lower level, by having the emailtosms.php script as a simple wrapper that processes the command line args, and then pass off to more testable class. Depending on the final step, you could write unit tests to do almost every but the final send (maybe mock the final step that actually sends it, and just store it to a variable, then check you've got something valid there).

通过将emailtosms.php脚本作为处理命令行args的简单包装器,然后传递给更可测试的类,在较低级别进行测试。根据最后一步,您可以编写单元测试来完成除最终发送之外的几乎所有操作(可能模拟实际发送它的最后一步,并将其存储到变量中,然后检查您是否在那里有效)。

The final integration, runs the full class end-to-end, and check its output, looking at the final log - or a little higher-level, what would be put into to log.

最后的集成,端到端运行完整的类,并检查其输出,查看最终日志 - 或更高级别,将记录什么。


推荐阅读
  • 本文介绍了两种使用Java发送短信的方法:利用第三方平台的HTTP请求和通过硬件设备短信猫。重点讲解了如何通过Java代码配置和使用短信猫发送短信的过程,包括必要的编码转换、串口操作及短信发送的核心逻辑。 ... [详细]
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • 本文探讨了SSDP(简单服务发现协议)和WSD(Web服务发现)协议,特别是SSDP如何通过固定多播地址239.255.255.250:1900实现局域网内的服务自发现功能。文中还详细介绍了SSDP协议的关键操作类型及其应用场景。 ... [详细]
  • 本文探讨了如何在Node.js环境中,通过Tor网络使用的SOCKS5代理执行HTTP请求。文中不仅提供了基础的实现方法,还介绍了几种常用的库和工具,帮助开发者解决遇到的问题。 ... [详细]
  • 近期,考虑到在Vim内部进行GDB调试、运行Python脚本和数据库连接等多样化需求,思考是否可以通过集成终端来简化这些操作,而非逐一编写Vim脚本来实现。通过研究发现,确实存在一种高效的方法——利用特定插件实现终端功能的整合。 ... [详细]
  • Docker 自定义网络配置详解
    本文详细介绍如何在 Docker 中自定义网络设置,包括网关和子网地址的配置。通过具体示例展示如何创建和管理自定义网络,以及容器间的通信方式。 ... [详细]
  • sqlserver动态分区方案例子
    sqlserver动态分区方案例子当我们存储的数据量比较大时,比如超过千万,上亿级别时单纯的使用索引可能效果不明显了,此时我们可以考虑采 ... [详细]
  • 本文将探讨从ASP.NET 1.1到2.0期间编译系统的重要变革。通过对比两个版本的即时编译模型,我们将揭示2.0版本中引入的新特性和改进之处。 ... [详细]
  • 解决ASP.NET Core在IIS中出现的502.5进程失败错误
    本文详细探讨了在Windows Server 2012环境下安装.NET Core后,IIS站点出现502.5错误的原因及解决方案,包括重启服务和系统的方法。 ... [详细]
  • 本文探讨了在渗透测试中信息收集阶段使用的几种端口扫描技术,包括nmap、masscan、socket、telnet及nc等工具的应用与比较。 ... [详细]
  • 前文|功能型_品读鸿蒙HDF架构
    前文|功能型_品读鸿蒙HDF架构 ... [详细]
  • 本文探讨了如何为Web浏览器(如Firefox)添加全局热键(例如媒体控制键),并详细说明了实现这一功能所需的步骤,包括可能需要的Firefox扩展和Greasemonkey脚本。 ... [详细]
  • 在Android应用开发过程中,经常需要在SQLite数据库中快速插入大量数据。本文通过实例探讨了不同插入方法的效率,并提供了优化建议。 ... [详细]
  • 本文基于《Linux命令行与Shell脚本编程大全》第三版的第十一章内容,探讨了如何构建基本的Shell脚本,包括命令组合、脚本创建、消息显示、变量使用、输入输出重定向、管道、数学运算及脚本退出等方面的知识。 ... [详细]
  • Docker入门与实践指南
    本文介绍了Docker的基础知识,包括其作为开源应用容器引擎的特点,以及如何利用Docker将应用程序及其依赖项打包成轻量级的容器镜像。同时,还详细讲解了Docker的核心概念、安装过程及基本命令操作。 ... [详细]
author-avatar
傻傻的不敢看结5_749
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有