Skip to main content
Completed

Unit Testing for Table-Valued Functions

Related products:Software Factory

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

Reply


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