Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
PowerShell Function to handle Moq Setup and Verifies for you!
<#
.Synopsis
Creates your Moq.Setups for you!
.DESCRIPTION
Provide a method signature to receive an example of a basic, lazy Mock for the method
.EXAMPLE
$myMethodSignature = "
GetDeploymentStatus(
string someToken,
int someIntValue = 10,
bool someBoolValue = false,
TimeSpan delayLookup = default,
CancellationToken cancellationToken
)"
New-MoqMethodConfiguration $myMethodSignature
.Setup(m=>m.
GetDeploymentStatus(It.IsAny<string>(),It.IsAny<int>(),It.IsAny<bool>(),It.IsAny<TimeSpan>(),It.IsAny<CancellationToken>())).Returns...
.EXAMPLE
Another example of how to use this cmdlet
#>
Function New-MoqMethodConfiguration{
[CmdletBinding()]
param(
[String]
$methodSignature,
[Switch]
$Verify = $false
)
$outputs = New-Object System.Collections.ArrayList
$methodName = $methodSignature.Split('(')[0]
Write-Verbose "found method of name $methodName"
$parms= $methodSignature.Split('(')[1..10].Split("`n").Trim().Replace(')','')
Write-Verbose "found $($parms.Count) parameters"
ForEach($parm in $parms){
if($parm.Length -le 0){continue}
Write-Verbose "processing $parm "
$outputs.Add("It.IsAny<$($parm.Split()[0])>()") | Out-Null
}
$paramMatcher = $outputs -join ","
if ($Verify){
Write-output ".Verify(m=>m.$($methodName)($paramMatcher), Times.Once)"
}
else{
Write-output ".Setup(m=>m.$($methodName)($paramMatcher)).Returns..."
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.