Pester PowerShell测试提示多次输入

Pester PowerShell测试提示多次输入,powershell,pester,Powershell,Pester,My.tests.ps1 function Palindrome1 { [CmdletBinding()] param ( [Parameter(Mandatory)] [string] $param ) [string] $ReversString $StringLength = @() $StringLength = $param.Length while ($StringLength -ge 0)

My
.tests.ps1

function Palindrome1
{
    [CmdletBinding()]
    param (
        [Parameter(Mandatory)]
        [string] $param
    )

    [string] $ReversString
    $StringLength = @()

    $StringLength = $param.Length

    while ($StringLength -ge 0)
    {
        $ReversString = $ReversString + $param[$StringLength]
        $StringLength--
    }

    if ($ReversString -eq $param)
    {
        return $true
    }
    else
    {
        return $false
    }
}

当您将参数标记为强制时,必须为其提供输入值-否则它将提示您输入一个值

发件人:


当您将一个参数标记为“必需”,您必须为它提供一个输入值-否则它将提示您输入一个值

发件人:


如果像这样更新参数块

Describe -Tags "Example" "Palindrome1" {
    It "does something useful" {
        Palindrome1 -param "value goes here" | Should Be $true
    }
}

您的测试将按预期失败,而不提示输入。

如果您像这样更新参数块

Describe -Tags "Example" "Palindrome1" {
    It "does something useful" {
        Palindrome1 -param "value goes here" | Should Be $true
    }
}

如果不提示输入,您的测试将按预期失败。

非常感谢MathiasHi,但当我作为输入通过雷达时,测试用例将失败idea@Dotnet仍然存在与您发布的另一个问题相同的缺陷(
[string]$ReverseString
仍然导致空字符串)我把它弄空了,但看不到预期的结果result@Dotnet如果我按照您问题中的函数,按照另一个答案中的建议更改
$ReversString
,然后使用“radar”作为输入参数运行测试,它会工作(+测试成功)非常感谢MathiasHi,但是当我通过雷达作为输入时,测试用例失败了idea@Dotnet仍然存在与您发布的另一个问题相同的缺陷(
[string]$reverseString
仍然导致空字符串)。我将其设置为空,但看不到预期的错误result@Dotnet如果我把你的功能理解为你问题中的功能,按照另一个答案中的建议更改
$ReversString
,然后使用“radar”作为输入参数运行测试,它会工作(+测试成功)
Describe -Tags "Example" "Palindrome1" {
    It "does something useful" {
        Palindrome1 -param "value goes here" | Should Be $true
    }
}
param (
    [ValidateNotNullorEmpty()]
    [string] $param = $(throw "a parameter is required")
)