对使用 getdate() 的存储过程进行单元测试的最佳实践

Best practice to unit test stored procedure that uses getdate()

我有一个存储过程,它使用 getdate() 获取当前日期并与提供的日期进行比较。

但是测试出现了问题 -> 通常为了测试我们准备了输入和输出数据,并在这些数据中预定义了日期。但是 getdate() 总是 return 当前时间,所以测试结果会在时间上有所不同。

我认为没有办法改变 getdate() 会 return 的东西?但是从存储过程中取出 getdate() 并使用一些输入参数代替也不是一个选项。

测试此类存储过程以使测试结果保持不变的最佳实践是什么?

看来只能更改服务器日期或修改存储过程才能完成:

Changing the output of Getdate

在这些限制条件下,您可以检查程序returns 的结果集是否没有错误。如果该过程查询其他表,您可以使用基于当前日期的数据填充这些表,调用该过程,验证结果,然后从其他表中删除数据。

或者,如果程序确实是固定不变的,那么在这种(罕见的)情况下,自动化测试的成本可能会高于它的价值。您可以手动验证程序 (QA)。