Как проверить, была ли вложенная хранимая процедура выполнена в tsqlt
У меня есть хранимая процедура, которая условно выполняет вложенную хранимую процедуру.
В модульном тесте мне нужно проверить, была ли выполнена эта вложенная хранимая процедура.
Я старался tSQLt.SpyProcedure
, но, похоже, не работает так, как я хочу.
содержание моего модульного теста
-- Assembly
exec tSQLt.SpyProcedure 'procedureName', 'raiserror(''procedureName was fired'',16,1)'
-- Assert
exec tSQLt.ExpectException 'procedureName was fired'
-- Action
exec masterProcedureName -- triggers procedureName
но tsqlt.run 'unitestName'
возвращается
fail: (Failure) Ожидается, что возникнет ошибка.
Есть ли у вас какие-либо идеи?
2 ответа
Хотя, как вы упомянули, ваш подход работает, я предлагаю вам использовать ..._spyprocedurelog
стол вместо. Это позволит вам отследить несколько выполнений, а также параметры, передаваемые каждый раз. И если в какой-то момент вы добавите обработку ошибок во внешнюю процедуру, это все равно будет работать.
Посмотрите пример в документации SpyProcedure.
Мои извинения, следующий код работает, у меня была ошибка где-то еще.