tsqlt тестирует выходной параметр из хранимой процедуры - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть хранимая процедура, которую я пытаюсь проверить для правильной генерации выходного параметра. Я экспериментировал с tsqlt.ExpectException, но это не сработало. Я вместо этого пытаюсь tsqlt.AssertEqualsTable.

    CREATE TABLE #actual (msg NVARCHAR(MAX));
CREATE TABLE #expected (msg NVARCHAR(MAX));
INSERT #expected (msg) VALUES (N'Location w1005 has LPNs that were produced against a different production order than 1')
--EXEC tSQLt.ExpectException @ExpectedMessage = N'Location 1 has LPNs that were produced agains a different production order than orderNumber';

EXEC dbo.wms_whse_check_location
    @command = @Command, @operLocationHasOtherLPN=@operLocationHasOtherLPN OUTPUT;  


INSERT #actual (msg) VALUES (@operLocationHasOtherLPN) 


EXEC tsqlt.AssertEqualsTable @Expected = '#expected', @actual = '#actual'

Тест не пройден, и вывод команды tsqlt:

Неожиданные / отсутствующие строки набора результатов! | м | мсг | + --- + --------------------------------------------- ----------------------------------------- + | <| Местоположение w1005 имеет номера LPN, которые были произведены против производственного заказа, отличного от 1 | |> | Местоположение w1005 имеет LPN, которые были произведены против производственного заказа, отличного от l |

В приведенном выше фрагменте может быть трудно увидеть, но строка <(ожидаемая) идентична> (фактическая) row - tsqlt находит разницу, которой на самом деле не существует. Кажется, я не выбираю правильный метод.

Кто-нибудь написал тесты для проверки выходных параметров? Какой метод подходит? Спасибо

ps Извиняюсь за грязное форматирование. Я не обычный постер.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Используйте tSQLt.AssertEqualsString, как вы уже узнали.

Кроме того, ваши две строки не идентичны. Один заканчивается на «1», другой нет.

0 голосов
/ 16 апреля 2020

tSQLt.AssertEqualsString фактически является подходящим тестом. Я не знаю, где я ошибся, но когда я конкатенировал соответствующее ожидаемое сообщение в коде (вместо того, чтобы его печатать), а затем запустил тест, все прошло успешно.

...