I've got a mega function that everybody is afraid to modify. So each fix adds a dozen of new
IF
lines. To me it feels that this function screams for proper testing.
Instead of the real function I'm including a really simplified example, because I believe that the crux of the challenge is that it's not only a function of its explicit parameters, but also of the state of some of the actual tables in the database.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [statistic].[daysByProject](
@DateFrom DATE,
@DateTo DATE,
)
returns
@ret table(ProjectID INT, IsFine TINYINT, Days smallint)
BEGIN
insert into @ret(ProjectID, IsFine, Days)
select ProjectID, IsFine, Days
from dbo.SomeRealTable
RETURN
END
Is it possible to add tests to such a function? I've even heard of including tests in a transaction, apparently something akin to this
/* alter function */
/**
* Set up test case
* Run
* Raise error if test fails
* Repeat with all test cases
*/
/* Roll back on error */
Could something like that be possible so that (unless explicitly working around this) developers could only modify the function in a way that satisfies the requirements of test cases?
Asked by Džuris
(121 rep)
Dec 1, 2020, 07:39 AM
Last activity: Dec 9, 2020, 08:52 AM
Last activity: Dec 9, 2020, 08:52 AM