Asserts that mock object within current unit test execution WERE NOT called with specified parameter value. Fails if mock object were called during current unit test execution with the specified value.

Arguments

  • v_PretendObjectName – Name of the mock object. Supports four part object name. SYSNAME data type.
  • v_ParameterName - Name of the parameter. SYSNAME
  • v_ParameterValue - Parameter value. NVARCHAR(MAX) 
  • 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 primary outer procedure*/

CREATE PROC SetupDefaultUsers

AS

BEGIN

       EXEC AddNewUser @UserName = 'Kelly',     @UserRole = 'Administrator'

       EXEC AddNewUser @UserName = 'Bill',      @UserRole = 'Reporting Team'

       EXEC AddNewUser @UserName = 'Michael',   @UserRole = 'Developer'

END

GO

 

/*create unit test procedure*/

CREATE PROCEDURE UT_USERTESTS_AddNewUser

AS

BEGIN

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

       EXEC DBTD_UNIT_TEST 'USERTESTS'

       --create mock for inner procedure

       EXEC DBTD_CREATE_MOCK_PROCEDURE 'AddNewUser', NULL, NULL, NULL

       --call primary busines logic

       EXEC SetupDefaultUsers

       --assert that inner procedure were called within primary logic

       --and that it were not called with UNEXPECTED parameter

       EXEC DBTD_ASSERT_MOCK_NOT_CALLED_WITH_PARAM

              @v_PrependObjectName  = 'AddNewUser',

              @v_ParameterName      = '@SuperUserName',  

              @v_ParameterValue     = 'Kelly',

              @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_AddNewUser

ROLLBACK

GO

 

See Also