Skip to main content
Completed

Unit Testing for Table-Valued Functions

Related products:Software Factory
htimmermans
Harm Horstman
Mark Jongeling
John Lunenburg
  • htimmermans
    htimmermans
  • Harm Horstman
    Harm Horstman
  • Mark Jongeling
    Mark Jongeling
  • John Lunenburg
    John Lunenburg

Robbert van Tongeren
Thinkwise blogger

As a developer, I aim to unit test my table-valued functions independently from the functionality where they are used. This approach provides better results and simplifies the setup of unit tests.

Unfortunately, the current documentation indicates that testing table-valued functions separately is not supported. However, I propose an alternative approach:

  1. Setup: Use the same setup as for a scalar function.
  2. Output Testing: Verify the function’s output using an assertion query.

Below is an example of how the generated code might look:

-- Declare parameters
declare @first_id int = convert(int, '1');
declare @second_id int = convert(int, '2');
declare @return_table table (
    "id_1"    "int"         null,
    "id_2"    "int"         null,
    "value_1" "varchar(10)" null
);

-- Execute unit test
insert into @return_table (id_1, id_2, value_1)
select id_1, id_2, value_1
from dbo.table_valued_function(@first_id, @second_id);

-- Assertion query
if exists (select 1 from @return_table)
begin
    exec tsf_send_assertion_msg 1, 'Successful';
end
else
begin
    exec tsf_send_assertion_msg 0, 'Failed! No results returned!';
end

This solution leverages the UI input for the function and validates the results using the assertion query. The “table_valued_function” takes two input parameters (“first_id” and “second_id”) and returns a table named “return_table” with three columns: “id_1,” “id_2,” and “value_1.”

Did this topic help you find an answer to your question?

4 replies

Mark Jongeling
Administrator
Forum|alt.badge.img+23
NewOpen

Renée Evertzen
Moderator
Forum|alt.badge.img+4
OpenWorking on it!

Renée Evertzen
Moderator
Forum|alt.badge.img+4
Working on it!Next release

Jeroen van den Belt
Administrator
Forum|alt.badge.img+9
Next releaseCompleted

Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings