2017-04-12 2 views
1

J'ai écrit un test de testeur pour vérifier que certains dossiers et fichiers existent. Le test de pester fonctionne très bien mais je voulais inclure des suggestions de correctifs si le test est appelé avec l'option -Verbose. Mais je n'arrive pas à obtenir le paramètre -Verbose au test réel.-Verbose ne fonctionne pas avec mon test Pester dans PowerShell

Dossier/Structure du fichier:

Custom-PowerShellModule 
    | Custom-PowerShellModule.psd1 
    | Custom-PowerShellModule.psm1 
    \---Tests 
      Module.Tests.ps1 

Ci-dessous est juste la partie supérieure du test Pester:

$Here = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)" 

Describe "Module Minimum Requirements Tests. Use -Verbose for Suggested Fixes" -Tags Module { 
    Context "Test: Verify File Counts = 1" { 
    Write-Verbose "If you receive an error, verify there is only 'ONE' PSD1 File and only 'ONE' PSM1 File." 
    It "There is only one PSD1 file" { (Get-ChildItem "$Here\..\" *.psd1).count | Should be 1 } 
    It "There is only one PSM1 file" { (Get-ChildItem "$Here\..\" *.psm1).count | Should be 1 } 
    } 
} 

Répondre

0

-Verbose switch of cmdlets Invoke-Pester` n'est pas disponible dans le côté les cas de test, vous avez pour passer explicitement cela pour le cas de test à accéder.

Vous trouverez ci-dessous un exemple sur votre script.

Param([Bool]$Verbose) 

Describe "Module Minimum Requirements Tests. Use -Verbose for Suggested Fixes" -Tags Module { 
    Context "Test: Verify File Counts = 1" { 
    Write-Verbose "If you receive an error, verify there is only 'ONE' PSD1 File and only 'ONE' PSM1 File." -Verbose:$Verbose 
    It "There is only one PSD1 file" { (Get-ChildItem "$Here\..\" *.psd1).count | Should be 1 } 
    It "There is only one PSM1 file" { (Get-ChildItem "$Here\..\" *.psm1).count | Should be 1 } 
    } 
} 


Invoke-Pester -Script @{Path='path' ; Parameters = @{ Verbose = $True }} 

Cordialement, Prasoon

1

par l'autre réponse, il ne semble pas être possible d'utiliser Write-Verbose lors de l'exécution du script avec la commande Invoke-Pester. Je pense que cela peut être dû au fait que l'utilisation de la commande Invoke-Pester signifie que votre script est interprété plutôt que directement exécuté par le moteur PowerShell. La meilleure alternative suivante serait d'ajouter If instructions qui effectuent les mêmes vérifications que vos tests et ensuite utiliser Write-Host ou Write-Warning pour donner des instructions si elles sont négatives. Je l'ai fait de temps en temps dans le passé.

Vous pouvez cependant utiliser -verbose si vous exécutez le script directement (par exemple, en exécutant directement le fichier * .tests.ps1). Cependant, pour ce faire, vous devez ajouter [cmdletbinding()] et un bloc Param en haut de votre script:

[cmdletbinding()] 
Param() 

$Here = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)" 

Describe "Module Minimum Requirements Tests. Use -Verbose for Suggested Fixes" -Tags Module { 
    Context "Test: Verify File Counts = 1" { 

    Write-Verbose "If you receive an error, verify there is only 'ONE' PSD1 File and only 'ONE' PSM1 File." 

    It "There is only one PSD1 file" { (Get-ChildItem "$Here\..\" *.psd1).count | Should be 1 } 
    It "There is only one PSM1 file" { (Get-ChildItem "$Here\..\" *.psm1).count | Should be 1 } 
    } 
}