Asserts that mock object was called specified number of times within the current unit test execution. Fails if mock object were not called specified number of times during current unit test execution.
Arguments
-
v_PretendObjectName – Name of the mock object. Supports four part object name. SYSNAME data type.
-
v_NumberOfCalls - The number of calls that we expect mock object were 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 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 happened exactly 3 times
EXEC DBTD_ASSERT_MOCK_NUMBER_OF_CALLS
@v_PrependObjectName = '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_AddNewUser
ROLLBACK
GO
See Also