对使用 getdate() 的存储过程进行单元测试的最佳实践
Best practice to unit test stored procedure that uses getdate()
我有一个存储过程,它使用 getdate()
获取当前日期并与提供的日期进行比较。
但是测试出现了问题 -> 通常为了测试我们准备了输入和输出数据,并在这些数据中预定义了日期。但是 getdate()
总是 return 当前时间,所以测试结果会在时间上有所不同。
我认为没有办法改变 getdate()
会 return 的东西?但是从存储过程中取出 getdate()
并使用一些输入参数代替也不是一个选项。
测试此类存储过程以使测试结果保持不变的最佳实践是什么?
看来只能更改服务器日期或修改存储过程才能完成:
Changing the output of Getdate
在这些限制条件下,您可以检查程序returns 的结果集是否没有错误。如果该过程查询其他表,您可以使用基于当前日期的数据填充这些表,调用该过程,验证结果,然后从其他表中删除数据。
或者,如果程序确实是固定不变的,那么在这种(罕见的)情况下,自动化测试的成本可能会高于它的价值。您可以手动验证程序 (QA)。
我有一个存储过程,它使用 getdate()
获取当前日期并与提供的日期进行比较。
但是测试出现了问题 -> 通常为了测试我们准备了输入和输出数据,并在这些数据中预定义了日期。但是 getdate()
总是 return 当前时间,所以测试结果会在时间上有所不同。
我认为没有办法改变 getdate()
会 return 的东西?但是从存储过程中取出 getdate()
并使用一些输入参数代替也不是一个选项。
测试此类存储过程以使测试结果保持不变的最佳实践是什么?
看来只能更改服务器日期或修改存储过程才能完成:
Changing the output of Getdate
在这些限制条件下,您可以检查程序returns 的结果集是否没有错误。如果该过程查询其他表,您可以使用基于当前日期的数据填充这些表,调用该过程,验证结果,然后从其他表中删除数据。
或者,如果程序确实是固定不变的,那么在这种(罕见的)情况下,自动化测试的成本可能会高于它的价值。您可以手动验证程序 (QA)。