Моделирование команд Azure cli с помощью Pester

У меня есть набор скриптов Azure Cli, которые я поместил в функцию powershell, например:

function NewAppRegistration($name, $replyUrls, $resourceAccessesFilePath) {   
    $appRegistration = az ad app create `
        --display-name $name `
        --reply-urls $replyUrls `
        --oauth2-allow-implicit-flow true `
        --available-to-other-tenants false `
        -o json | 
    ConvertFrom-Json

    if (Test-Path $resourceAccessesFilePath) {
        $appRegistration = az ad app update `
        --id $appRegistration.appId `
        --required-resource-accesses $resourceAccessesFilePath
    }

    return $appRegistration
}

И я хочу издеваться над az ad app create, но я понятия не имею, как это сделать, и я также не нахожу ни одного примера того, как это сделать. Конечно, я мог бы в конечном итоге создать для каждой команды az свою собственную функцию powershell, и я мог бы издеваться над этими функциями, но интересно, нельзя ли было сделать это проще?


person DAG    schedule 23.03.2021    source источник


Ответы (2)


Я не думаю, что можно издеваться над функциями, написанными не в PowerShell, если только вы не завернете эти команды в функцию PowerShell. Однако существует собственный модуль PowerShell, написанный Microsoft, который может удовлетворить ваши потребности. Вы можете легко издеваться над этими функциями, не создавая функций-оболочек.

https://docs.microsoft.com/en-us/powershell/azure/new-azureps-module-az?view=azps-5.7.0

person Efie    schedule 23.03.2021
comment
Спасибо за ваш отзыв. Проверьте мой ответ. - person DAG; 30.03.2021

Издеваться над командой bash, такой как az или любой другой тип, это:

Mock az {}

Для утверждения:

Should -Invoke -CommandName "az" -Exactly -Times 1 -ParameterFilter { 
            "$args" -match "ad app create" -and
            "$args" -match "--display-name $expectedName" -and
            "$args" -match "--reply-urls" -and (-not (Compare-Object $args[6] $expectedReplyUrls)) -and
            "$args" -match "--oauth2-allow-implicit-flow true" -and
            "$args" -match "--available-to-other-tenants false" -and
            "$args" -match "-o json"
        }

Это не задокументировано Пестером, и это решение было основано этой проблемы с github

person DAG    schedule 30.03.2021