最近,我开始在我们的产品中使用Email2SMS功能。当我加入项目时,这个组件的单元测试代码覆盖率为零。遗产代码。
自从我开始研究它以来,我一直在使用测试优先方法。但代码质量非常低。拆分它并通过单元测试测试小块是非常困难的,所以我决定编写集成测试。
有php脚本,它接受一些消息信息,在DB中搜索用户并保存一些信息,如果一切正常。
$last_line = system('php emailtosms.php -file=unicode_message.txt ', $retval);
$this->assertStringExistsInLogFile('Email to SMS message was not sent');
是不是坏了?你会如何解决这个问题?
答案 0 :(得分:3)
不太好。
在较低级别进行测试,将emailtosms.php脚本作为处理命令行参数的简单包装器,然后传递给更可测试的类。根据最后一步,您可以编写单元测试来完成除最终发送之外的几乎所有操作(可能模拟实际发送它的最后一步,并将其存储到变量中,然后检查您是否在那里有效)。 / p>
最终的集成,端到端运行完整的类,并检查其输出,查看最终日志 - 或更高级别,将记录的内容。