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