Should-HaveParameter
Contributions are welcome in Pester-repo.
SYNOPSIS
Asserts that a command has the expected parameter.
SYNTAX
Should-HaveParameter [[-ParameterName] <String>] [[-Type] <Object>] [[-DefaultValue] <String>] [-Mandatory]
[[-InParameterSet] <String>] [-HasArgumentCompleter] [[-Alias] <String[]>] [[-Actual] <Object>]
[[-Because] <String>] [<CommonParameters>]
DESCRIPTION
This assertion inspects command metadata and can also verify parameter details such as type, default value, aliases, parameter set membership, mandatory status, and argument completers.
EXAMPLES
EXAMPLE 1
Get-Command Invoke-WebRequest | Should-HaveParameter Uri -Type ([uri]) -Mandatory
This assertion passes, because Invoke-WebRequest has a mandatory -Uri parameter of type [uri].
EXAMPLE 2
function Get-Cat {
[CmdletBinding(DefaultParameterSetName = 'ByName')]
param(
[Parameter(ParameterSetName = 'ByName', Mandatory)]
[Alias('Id')]
[string] $Name,
[Parameter(ParameterSetName = 'ByIndex', Mandatory)]
[int] $Index,
[ValidateSet('Json', 'Xml')]
[string] $Format = 'Json'
)
}
Describe 'Get-Cat public contract' {
It 'requires a Name' {
Get-Command Get-Cat | Should-HaveParameter Name -Type ([string]) -Mandatory -Alias 'Id'
}
It 'defaults Format to Json' {
Get-Command Get-Cat | Should-HaveParameter Format -Type ([string]) -DefaultValue 'Json'
}
}
A typical real-life use is locking down the public API of your own command.
These assertions pass, because -Name is a mandatory [string] with the alias Id, and -Format is an optional [string] that defaults to Json.
EXAMPLE 3
Get-Command Get-Cat | Should-HaveParameter Index -InParameterSet 'ByIndex'
This assertion passes, because the -Index parameter (from the Get-Cat function above) belongs to the ByIndex parameter set.
PARAMETERS
-ParameterName
The name of the parameter to check. E.g. Uri
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Type
The type of the parameter to check. E.g. [string]
Type: Object
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-DefaultValue
The default value of the parameter to check. E.g. "https://example.com"
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Mandatory
Whether the parameter is mandatory or not.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-InParameterSet
The parameter set that the parameter belongs to.
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-HasArgumentCompleter
Whether the parameter has an argument completer or not.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Alias
The alias of the parameter to check.
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Actual
The actual command to check. E.g. Get-Command "Invoke-WebRequest"
Type: Object
Parameter Sets: (All)
Aliases:
Required: False
Position: 6
Default value: None
Accept pipeline input: True (ByValue)
Accept wildcard characters: False
-Because
The reason why the input should be the expected value.
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 7
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters.
INPUTS
OUTPUTS
NOTES
The attribute [ArgumentCompleter] was added with PSv5. Previously this assertion will not be able to use the -HasArgumentCompleter parameter if the attribute does not exist.
Use the -ErrorAction parameter to control soft-assertion behavior for this assertion.
-ErrorAction Continue records the failure and lets the rest of the test run (a soft assertion), while -ErrorAction Stop fails the test immediately, for example to guard a precondition before continuing.
When -ErrorAction is not specified, the behavior comes from Should.ErrorAction in the configuration, which defaults to Stop.
See https://pester.dev/docs/assertions/soft-assertions for more about soft assertions.
RELATED LINKS
https://pester.dev/docs/commands/Should-HaveParameter
https://pester.dev/docs/assertions
VERSION
This page was generated using comment-based help in Pester 6.0.0-rc5.