Asserts that stub object was called specified number of times within the current unit test execution. Fails if stub object were not called specified number of times during current unit test execution.

Arguments

  • v_PretendObjectName – Name of the pretend object. Supports four part object name. SYSNAME data type.
  • v_NumberOfCalls - The number of calls that we expect this pretend object to be called, INT. If NULL value provided then this assert will check that mock object called any number of times.
  • v_UserMessage – Message to report when assertion fails, NVARCHAR(MAX)

 

Note: If you are planning to run unit test manually, you must use DBTD_UNIT_TEST hint procedure to explicitly define a unit test procedure as the unit test.

Examples

SQL Server

/*Create inner procedure that will be called within outer scope*/

CREATE PROC AddNewUser

       @UserName     VARCHAR(50),

       @UserRole     VARCHAR(50)

AS

BEGIN

       --Do something

       PRINT @UserName

       PRINT @UserRole

END

GO

 

/*create unit test procedure*/

CREATE PROCEDURE UT_USERTESTS_STUB_AddNewUser

AS

BEGIN

       --make sure that this test is the part of the USERTESTS suite

       EXEC DBTD_UNIT_TEST 'USERTESTS'

       --create stub

       EXEC DBTD_CREATE_STUB_PROCEDURE 'STUB_AddNewUser','AddNewUser', NULL

       --call it

       EXEC STUB_AddNewUser 'John','Level 1'

       EXEC STUB_AddNewUser 'Steve','Level 2'

       EXEC STUB_AddNewUser 'Martha','Level 3'

       --assert that inner procedure were called 

       --and that it happened exactly 3 times

       EXEC DBTD_ASSERT_STUB_NUMBER_OF_CALLS

              @v_PrependObjectName  = 'STUB_AddNewUser',

              @v_NumberOfCalls      = 3,

              @v_UserMessage        = 'We have issues'

END

GO

 

--run just one unit test alone to verify results

--note that we will explicitly use transactions

--because we run unit test outside of the DBTestDriven framework

BEGIN TRAN

EXEC UT_USERTESTS_STUB_AddNewUser

ROLLBACK

GO

 

See Also