【发布时间】:2020-07-12 04:12:21
【问题描述】:
我正在尝试设计一个单元测试,以确保消息大于一定数量的字符。我的代码是:
EXEC tSQLt.NewTestClass 'TestMarketingEnoughRows';
GO
CREATE OR ALTER PROCEDURE TestMarketing.[test that API_GetStandardDisclaimerText tests to make sure that the message is long enough]
AS
BEGIN
DROP TABLE IF EXISTS #Actual;
CREATE TABLE #Actual
(
Note NVARCHAR(MAX),
NoteWithHTML XML
);
INSERT #Actual
(
Note,
NoteWithHTML
)
EXEC Marketing.API_GetStandardDisclaimerText @Username = 'AnyValue', -- varchar(100)
@OneParagraphPerRow = 0; -- bit
SELECT LEN(Note),
LEN(CAST(NoteWithHTML AS NVARCHAR(MAX)))
FROM #Actual;
DECLARE @ArbitaryNumberOfCharacters INT = 15000;
DECLARE @ThisShouldEqualOne BIT =
(
SELECT CASE
WHEN LEN(Note) > @ArbitraryNumberOfCharacters
AND LEN(CAST(NoteWithHTML AS NVARCHAR(MAX))) > @ArbitraryNumberOfCharacters THEN
1
ELSE
0
END
FROM #Actual
);
EXEC tSQLt.AssertEquals @Expected = @ThisShouldEqualOne, -- sql_variant
@Actual = @ArbitaryNumberOfCharacters, -- sql_variant
@Message = N'test mctestyface'; -- nvarchar(max)
END;
GO
EXEC tSQLt.Run 'TestMarketingEnoughRows';
我收到以下错误:
消息 137,级别 15,状态 2,程序测试 API_GetStandardDisclaimerText 测试以确保消息是 足够长,第 25 行 [Batch Start Line 3] 必须声明标量 变量“@ArbitraryNumberOfCharacters”。消息 137,级别 15,状态 2, API_GetStandardDisclaimerText 测试的程序测试以确保 消息足够长,第 33 行 [Batch Start Line 3] 必须 声明标量变量“@ThisShouldEqualOne”。
我不知所措,因为我已经声明了变量并且似乎没有给出类型错误? stackoverflow 上有关此主题的其他帖子似乎对我没有帮助。
【问题讨论】:
-
看起来像是印刷错误。尝试将
@ArbitaryNumberOfCharacters从DECLARE复制粘贴到代码的其他部分。 -
好主,谢谢你....抱歉这个愚蠢的问题!
标签: sql sql-server-2008 tsqlt mysql-variables