Estamos intentando afirmar una llamada con un parámetro específico que es una matriz y devuelve falso en Assert-MockCalled , para todos los demás parámetros que no son una matriz, está funcionando (tipos de cadena ).

Este es mi ejemplo:

function NewZip ($Name) {
    $compress = @{
        Path             = "$PSScriptRoot/terms.txt", "$PSScriptRoot/fav.ico"
        CompressionLevel = "Fastest"
        DestinationPath  = "$PSScriptRoot/$Name.zip"
    }

    Compress-Archive @compress -Update
}

It "Creates a zip file" {
    # Arrange
    $name = "test"
    $assertParams = @{
        CommandName     = 'Compress-Archive'
        Times           = 1
        ParameterFilter = { 
            $Path -in "$PSScriptRoot/terms.txt", "$PSScriptRoot/fav.ico" -and
            $DestinationPath -eq "$PSScriptRoot/$name.zip" -and
            $CompressionLevel -eq  "Fastest" -and
            $Update -eq $true
        }
    }

    Mock Compress-Archive {}

    # Act
    NewPackage -Name $name

    # Assert
    Assert-MockCalled @assertParams
}

¿Cómo puedo utilizar la comparación de matrices en Assert-MockCalled?

0
DAG 13 mar. 2021 a las 23:11

1 respuesta

La mejor respuesta
$Path -in "$PSScriptRoot/terms.txt", "$PSScriptRoot/fav.ico"

No funciona porque:

Cuando el objeto de prueba es un conjunto, estos operadores utilizan la igualdad de referencia para comprobar si uno de los elementos del conjunto es la misma instancia del objeto de prueba.

Puede usar { {X0}} en su lugar para hacer una comparación de valores:

ParameterFilter = { 
    -not (Compare-Object $Path "$PSScriptRoot/terms.txt", "$PSScriptRoot/fav.ico") -and
    $DestinationPath -eq "$PSScriptRoot/$name.zip" -and
    $CompressionLevel -eq  "Fastest" -and
    $Update -eq $true
}

La negación es necesaria porque Compare-Object genera las diferencias. No genera nada si las matrices son iguales. Cuando se captura, "nada" se convierte en $null que se convierte en $false en un contexto booleano.

Los paréntesis (también conocidos como operador de grupo) para usar la salida de Compare-Object en una expresión.

1
zett42 14 mar. 2021 a las 18:02