1

我正在开发一个基于 Web 的租赁管理应用程序,该应用程序需要能够每天根据数据库中的信息在任何给定时间生成各种报告、提醒和警报。报告、提醒和警报类型的一些示例包括:

  • 发送一封交易电子邮件,让一组用户知道他们的下一张发票将在 15 天内到期。
  • 发送一封交易电子邮件,让一组用户知道他们有一张或多张逾期发票
  • 提醒物业经理某物业已逾期 X 天,并提出打印一套驱逐文件
  • 等等

似乎最简单的方法是定义一组脚本,这些脚本每天早上通过一组 cron 作业执行。每个脚本都会检查触发系统特定响应所需的标准。例如,我可能有一组脚本,例如 SendInvoiceDueIn15DaysEmail.php、SendInvoicePastDue30DaysEmail.php 等。

我的主要问题是,给定一个充满测试数据的数据库,模拟时间流逝的最佳方法是什么,比如 90 天,以确保数据每天触发正确的响应集?我的一些日常任务需要与第三方 API 交互,例如 Mandrill、Mail Chimp、一些行业特定的会计软件包等。

我的第二个问题是,如果有人有开发以未来发生的预定、重复事件为中心的应用程序的经验,我是否走在正确的轨道上?我已经构建了大部分核心系统(用户管理、物业管理、租赁管理),现在是时候测试事物的自动化方面了。

值得应用的核心是使用 Laravel 4,但我不认为这是一个严格的 PHP 问题。

TL;DR我如何模拟时间的流逝,以检查系统在 90 天内是否正确检测到一组事件并触发成功完成的适当响应?

4

1 回答 1

2

我认为这里的答案与您希望测试的所有其他内容相同 - 时钟模拟。抽象您检查现在时间的方式。然后,您可以创建一个模拟时钟实现,该实现在测试期间工作得更快(或报告您想要的任何内容),另一个实现将简单地返回生产中的真实时间。

通过这种方式,您还可以测试其他场景,例如服务器上的时间更改或夏令时。

于 2013-07-23T09:14:26.193 回答