Тест Пестера терпит неудачу, когда и ожидаемая ошибка брошена

Я пытаюсь использовать Pester for PowerShell для тестирования некоторого моего кода, но я не могу заставить Pester работать в отношении ошибок.

Возьмите этот очень простой пример -

using module AccessTokenRequestModel

InModuleScope -ModuleName AccessTokenRequestModel -ScriptBlock {

    ### Create a new instance of the 'AccessTokenRequest' object.
    $request = [AccessTokenRequest]::new()

    Describe -Name "the 'AccessTokenRequest' module -" -Tags @("AccessTokenRequest","Get","Unit") -Fixture {
        It "Given a valid organisation, the 'GetAccessToken' method should return a valid Access Token entity." {
            $accessTokenEntity = $request.GetAccessToken("ValidOrg")
            $accessTokenEntity.PartitionKey | Should be "AccessToken"
            $accessTokenEntity.RowKey | Should be "ValidOrg"
            $accessTokenEntity.AccessToken | Should be "12345"
        }

        It "Given an invalid organisation, the 'GetAccessToken' method should throw an error of type 'AccessTokenNotFoundException.'" {
            $request.GetAccessToken("FakeOrg") | Should -Throw
        }
    }
}

При вызове $tokens.GetAccessToken("FakeOrg") возникает ошибка типа AccessTokenNotFoundException , однако тест Пестера не выполняется.

Describing the 'AccessTokenRequest' module -
  [+] Given a valid organisation, the 'GetAccessToken' method should return a valid Access Token entity. 70ms
  [-] Given an invalid organisation, the 'GetAccessToken' method should throw an error of type 'AccessTokenNotFoundException.' 61ms
    AccessTokenNotFoundException: Access Token for organisation 'NonExistentAccessTokenTest' does not exist.
    at GetAccessTokenEntity, C:UsersdgardOneDrive - Landmark Information Group LtdFunction AppsAzureDevOpsVariableCheckerModulesAccessTokenServiceAccessTokenService.psm1: line 73
    at GetAccessToken, C:UsersdgardOneDrive - Landmark Information Group LtdFunction AppsAzureDevOpsVariableCheckerModulesAccessTokenRequestModelAccessTokenRequestModel.psm1: line 25
    at <ScriptBlock>, C:UsersdgardOneDrive - Landmark Information Group LtdFunction AppsAzureDevOpsVariableCheckerTestsUnitAccessTokenRequest.Tests.ps1: line 42

Ошибка генерируется командой throw и, как и предполагалось в этом вопросе, является завершающей ошибкой. И если я неправильно истолковываю документацию , это говорит о том, что сгенерированная ошибка should -throw .

Чего мне не хватает здесь - как я могу пройти этот тест, когда выдается ошибка?

Всего 1 ответ


При тестировании на -Throw вход в Should быть блоком сценария (заключенным в фигурные скобки), поэтому измените ваш тест на следующий:

{ $request.GetAccessToken("FakeOrg") } | Should -Throw

Есть идеи?

10000