EXEC sp_configure 'clr enabled', 1; RECONFIGURE;
DECLARE @cmd NVARCHAR(MAX); SET @cmd = 'ALTER DATABASE ' + QUOTENAME(DB_NAME()) + ' SET TRUSTWORTHY ON;'; EXEC(@cmd);
EXEC tSQLt.NewTestClass 'MyTestClass'
-- EXEC tSQLt.RunAll; -- MyTestClass EXEC tSQLt.Run 'MyTestClass'; -- FisrtTest MyTestClass EXEC tSQLt.Run 'MyTestClass.FisrtTest'; -- . -- FisrtTest MyTestClass EXEC tSQLt.Run;
Object type | Procedure | Result |
---|---|---|
Table | Faketable | Stub |
Procedure | Spyprocedure | Mock |
Function | Fakefunction | Stub |
tSQLt.FakeTable [@TableName = ] ' ' , [[@SchemaName = ] ' '] , [[@Identity = ] ' '] , [[@ComputedColumns = ] ' ] , [[@Defaults = ] ' ']
tSQLt.FakeFunction [@FunctionName = ] ' ' , [@FakeFunctionName = ] ' '
tSQLt.SpyProcedure [@ProcedureName = ] ' ' [, [@CommandToExecute = ] ' ' ]
tSQLt.ExpectException [ [@ExpectedMessage= ] ' '] [, [@ExpectedSeverity= ] ' '] [, [@ExpectedState= ] ' '] [, [@Message= ] ' '] [, [@ExpectedMessagePattern= ] ' '] [, [@ExpectedErrorNumber= ] ' ']
tSQLt.ExpectNoException [ [@Message= ] ' ']
Procedure | Description |
---|---|
Assertnotquals | Checks that the two values are NOT equal. WARNING: NULL at the expected value will result in an error |
AssertEmptyTable | Verifies that the procedure is empty |
Assertequals | Checks that the two values are equal. ATTENTION: In this case, NULL is NULL |
AssertEqualsString | Checks that two strings are equal. ATTENTION: In this case, NULL is NULL |
AssertObjectExists | Checks the existence of an object. |
Fail | Finishes the test with the given error |
AssertObjectDoesNotExist | Checks that the object does NOT exist. |
Assertlike | Checks that between expected and actual value is the operator LIKE ATTENTION: In this case, NULL is NULL |
CREATE TABLE expected( A INT ) CREATE TABLE actual( A BIGINT, B INT ) -- EXEC tSQLt.AssertEqualsTable 'expected', 'actual';
CREATE TABLE expected( A INT ) CREATE TABLE actual( A BIGINT, B INT ) -- EXEC tSQLt.AssertEqualsTable 'expected', 'actual'; -- EXEC tSQLt.AssertResultSetsHaveSameMetaData 'SELECT * FROM expected', 'SELECT * FROM actual';
-- CREATE TABLE temperature ( DateMeasure DATE, Value numeric (18,2) ) GO -- CREATE PROC CalcAvgTemperature @StartDate DATE, @EndDate DATE, @AvgTemperature numeric (18,2) OUT AS BEGIN SELECT @AvgTemperature = AVG(Value) FROM temperature WHERE DateMeasure BETWEEN @StartDate AND @EndDate END GO -- 4 CREATE PROC PrintAvgTemperatureLastFourDays @Date DATE, @TemperatureString VARCHAR(255) OUT AS BEGIN DECLARE @StartDate DATE = DATEADD(D, -3, @Date), @EndDate DATE = @Date, @Result numeric (18,2) EXEC CalcAvgTemperature @StartDate, @EndDate, @Result OUT SET @TemperatureString = ' ' + CONVERT(VARCHAR,@StartDate,104) + ' ' + CONVERT(VARCHAR,@EndDate,104) + ' ' + CONVERT(VARCHAR,@Result) END
EXEC tSQLt.NewTestClass 'TemperatureTests'
-- PrintAvgTemperatureLastFourDays CREATE PROC TemperatureTests.Test_PrintAvgTemperatureLastFourDays AS BEGIN -- -- CalcAvgTemperature , -- 100.00 EXEC tSQLt.SpyProcedure 'CalcAvgTemperature', 'SET @AvgTemperature = 100.00' -- DECLARE @TemperatureString VARCHAR(255) EXEC PrintAvgTemperatureLastFourDays '2014-08-04', @TemperatureString OUT -- -- , -- CalcAvgTemperature SELECT StartDate, EndDate INTO actual FROM CalcAvgTemperature_SpyProcedureLog -- CREATE TABLE expected ( StartDate DATE, EndDate DATE ) INSERT expected (StartDate, EndDate) VALUES ('2014-08-01', '2014-08-04') -- EXEC tSQLt.AssertEqualsTable 'expected', 'actual', ' CalcAvgTemperature ' -- EXEC tSQLt.AssertEqualsString ' 01.08.2014 04.08.2014 100.00', @TemperatureString, ' ' END GO -- CalcAvgTemperature ALTER PROC TemperatureTests.Test_CalcAvgTemperature AS BEGIN -- -- temperature EXEC tSQLt.FakeTable 'temperature' -- INSERT temperature (DateMeasure, Value) VALUES ('2014-08-04', 26.13), ('2014-08-03', 25.12), ('2014-08-02', 26.43), ('2014-08-01', 20.95) -- DECLARE @AvgTemperature numeric(18,2) EXEC CalcAvgTemperature '2014-08-01', '2014-08-04', @AvgTemperature OUT -- -- EXEC tSQLt.AssertEquals 24.66, @AvgTemperature, ' ' END
EXEC tSqlt.Run 'TemperatureTests'
+----------------------+ |Test Execution Summary| +----------------------+ |No|Test Case Name |Result | +--+----------------------------------------------------------+-------+ |1 |[TemperatureTests].[Test_CalcAvgTemperature] |Success| |2 |[TemperatureTests].[Test_PrintAvgTemperatureLastFourDays]|Success| ----------------------------------------------------------------------------- Test Case Summary: 2 test case(s) executed, 2 succeeded, 0 failed, 0 errored. -----------------------------------------------------------------------------
CREATE PROC [IncorrectTran] AS BEGIN BEGIN TRAN TestTran BEGIN TRY SELECT 1 / 0 COMMIT TRAN TestTran END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK TRAN TestTran END CATCH END
Source: https://habr.com/ru/post/234673/
All Articles