问题
如何测试没有返回值的存储过程。
设计
调用待测存储过程,然后计算该存储过程影响的对象的聚合校验和。把计算出来的校验和与期望的校验和进行比较。
方案
例如,设想待测存储过程要从tb1Employees表中删除特定的雇员记录:
create procedure usp_DeleteEmployee @empID char(3) as delete from tb1Employees where empID = @empID |
要测试这个存储过程,可以先调用它,计算tb1Employees表的校验和,然后把计算结果与期望值进行比较:
请declare @input char(3) declare @expected int declare @actual int set @input = 'e22' set @expected = 15087775 exec dbEmployees.dbo.usp_DeleteEmployee 'e22' select @actual = checksum_agg(checksum(*)) from dbEmployees.dbo.tb1.tb1Epmloyees if(@actual = @expected) print 'Pass' else print 'FAIL' |
如果存储过程没有返回值,那它肯定要实施一些操作,比如从数据库里面删除一些数据,要测试这样的存储过程,需要比较存储过程所操作的对象的实际值和期望值。这种情况与测试返回SQL行集对象的存储过程非常类似。