必须在单元测试中声明标量变量

时间:2020-03-31 14:50:34

标签: sql sql-server-2008 tsqlt mysql-variables

我正在尝试设计一个单元测试,以确保消息大于一定数量的字符。我的代码是:

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的其他帖子似乎对我没有帮助。

0 个答案:

没有答案