Asserts that mock object was called within current unit test execution. Fails if mock object were not called during current unit test execution.
Arguments
-
v_PretendObjectName – Name of the mock object. Supports four part object name. SYSNAME data type.
-
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
EXEC DBTD_ASSERT_MOCK_CALLED
@v_PrependObjectName = 'AddNewUser',
@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