我们希望在测试比较实际值和预期值时对 MySQL 存储过程和函数运行自动化测试。
问题是,即使我们在每次测试之前运行一个夹具脚本,我们的大多数例程都可以在给定相同输入的情况下返回不同的结果——我们做了很多依赖于now
. (now
是用于返回当前日期时间的内置函数。)
我们如何“冻结”now
测试数据库中返回的内容?
我能想到的最佳解决方案是将所有调用替换为now
对自定义函数的调用。在我们的 prod 数据库中,这个自定义函数只会调用内置的now
,而在我们的 dev 数据库中,它将返回一个静态日期。
有没有更简单的方法,比如SET global.CURRENT_TIME = '2015-01-01 00:00:00';
?