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?