Я впервые пытаюсь использовать TSQLT unittest framework и столкнулся с проблемой. У меня есть сохраненный pro c, подобный этому, который возвращает некоторые числа
Use Mydatabase
Declare @parameter1, @parameter2,@paramter3
BEGIN
SELECT @parameter1 = dbo.[function](@paramter2,parameter3)
..
..
-- Now some Dynamic SQL joins on two tables
BEGIN
SET @SQL = 'SELECT COLUMN1, COLUMN2 FROM FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.COLUMN1 =
TABLE2.COLUMN2 WHERE TABLE2.COLUMN3 = + CAST(@parameter1 as varchar(10))
EXECUTE sp_executesql @SQL, Output parameter
return
Проблема в том, что table1 и table2 обновляются ежедневно, и я не могу утверждать, что значения меняются, поэтому я натолкнулся на поддельные таблицы и шпионские процедуры,
- Есть ли способ использовать spyprocedures для использования поддельных таблиц, а не оригинальных таблиц? но с тем же соединением, как я могу ссылаться на фактическое на тестовое, так как я получаю ошибку как
Невозможно использовать SpyProcedure на [WD0000 \ server]. [database]. [dbo]. [usp.mystoredproc ] потому что процедура не существует
TSQLT код
EXEC tSQLt.NewTestClass 'SegmentSizeTest'
GO
CREATE PROCEDURE SegmentSizeTest.[test that checks the segment size]
AS
BEGIN
DECLARE @return_value int,@TotalCount int,@OneCount int,@TwoCount int
declare @Criteria Varchar(MAX)
declare @rampUpFactor int
declare @expected int
declare @actual int
SET @Criteria = 'My Criteria'
SET @GeoflexCriteria = NULL
--@TotalCount = @TotalCount OUTPUT
--@OneCount = @OneCount OUTPUT
-- @TwoCount = @TwoCount OUTPUT
SET @rampUpFactor = 1
set @expected = 160486
------Fake Table
EXEC tSQLt.FakeTable 'UnitTest.Household';
EXEC tSQLT.FakeTable 'UnitTest.Customer';
--
..Insert to UnitTest.Household and UnitTest.Customer tables
------Execution
EXEC @return_value = [VAReportingDB].[dbo].[GetSegmentSize]
@Criteria = @Criteria,
@TotalCount = @TotalCount OUTPUT,
@OneCount = @OneCount OUTPUT,
@TwoCount = @TwoCount OUTPUT
SELECT @TotalCount as N'@TotalCount',
@OneCount as N'@OneCount',
@TwoCount as N'@TwoCount'
------Assertion
EXEC tSQLt.AssertEquals @expected, @TotalCount;
END;
GO