Я работал над созданием теста, чтобы использовать ExpectException для ошибки, возникшей при выполнении хранимого процесса, но тест никогда не проходил так, как я ожидал.Поэтому, как часть моего устранения неполадок, я сделал очень простой сохраненный процесс:
ALTER PROC testerror AS RAISERROR ('SomeError',16,1);
Затем я построил тест для этого:
ALTER PROCEDURE [uspTest].[test the test]
AS
BEGIN
EXEC testerror
--Assert
EXEC tSQLt.ExpectException @ExpectedMessagePattern = '%SomeError%',
@ExpectedSeverity = 16,
@ExpectedState = 1;
END;
Когда я запускаю это в tSQLt, тест завершается неудачно сследующий вывод:
Test Procedure: [SSISAdmin].[uspTest].[test the test] on SF5I-ETLTST01
[uspTest].[test the test] failed: (Error)
SomeError[16,1]{testerror,1}
Я также пытался передать NULL для серьезности и состояния на основе примеров, которые были в документации для ExpectException, как показано ниже, но он все равно не прошел тест:
EXEC tSQLt.ExpectException @ExpectedMessagePattern = '%SomeError%',
@ExpectedSeverity = NULL,
@ExpectedState = NULL;
Я предполагаю, что я делаю что-то не так, но я не уверен, что, поскольку это выглядит как очень упрощенный тест и возвращаемое сообщение об ошибке.
Любая помощь будет принята.