热门标签 | 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.

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


推荐阅读
  • 如何解决《require_once(PHP/CodeCoverage/Filter.php):无法打开流》经验,为你挑选了1个好方法。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 解决php错误信息不显示在浏览器上的方法
    本文介绍了解决php错误信息不显示在浏览器上的方法。作者发现php中的各种错误信息并不显示在浏览器上,而是需要在日志文件中查看。为了解决这个问题,作者提供了一种解决方式:通过修改php.ini文件中的display_errors参数为On,并重启服务。这样就可以在浏览器上直接显示php错误信息了。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文介绍了Foundation框架中一些常用的结构体和类,包括表示范围作用的NSRange结构体的创建方式,处理几何图形的数据类型NSPoint和NSSize,以及由点和大小复合而成的矩形数据类型NSRect。同时还介绍了创建这些数据类型的方法,以及字符串类NSString的使用方法。 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
  • AndroidJetpackNavigation基本使用本篇主要介绍一下AndroidJetpack组件Navigation导航组件的基本使用当看到Navigation单词的时候应 ... [详细]
  • IamtryingtowriteaphpunittestforaLaravelcontrollerwhichexpectspostrequestswithabody ... [详细]
  • 如何解决《在laravel包中设置集成测试》经验,为你挑选了2个好方法。 ... [详细]
  • 如何解决《在ZF2中PHp单元测试错误'未定义索引:/config/autoload/global.php中的SERVER_NAME'》经验,为你挑选了1个好方法。 ... [详细]
  • 如何解决《PHPUnit和Abstract类:如何测试接受参数和其他具体方法的具体构造函数》经验,应该怎么弄,您有好建议吗? ... [详细]
  • 如何解决《是否可以在不扩展PHPUnit_Framework_TestCase的情况下使用PHPUnit断言?》经验,为你挑选了1个好方法。 ... [详细]
  • 如何解决《PHPUnit:模拟不存在的类》经验,为你挑选了1个好方法。 ... [详细]
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社区 版权所有