2017-04-12 12 views
1

특정 폴더와 파일이 있는지 확인하기 위해 pester 테스트를 작성했습니다. pester 테스트는 훌륭하게 작동하지만 -Verbose 옵션을 사용하여 테스트를 호출하면 수정 제안 사항을 포함하려고합니다. 그러나 실제 테스트에 -Verbose 매개 변수를 가져올 수 없습니다.-Verbose가 PowerShell의 Pester Test와 함께 작동하지 않습니다.

폴더/파일 구조 :

$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 } 
    } 
} 

답변

0

-Verbose switch of 호출-Pester` cmdlet을 당신이 가지고 테스트 케이스 측면에서는 사용할 수 없습니다 : 아래

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

는 훼방 시험의 바로 윗 부분입니다 테스트 케이스가 액세스 할 수 있도록 명시 적으로 전달해야합니다.

다음은 스크립트의 예입니다.

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 }} 

감사합니다, 다른 대답 당 Prasoon

1

, Invoke-Pester 명령 스크립트를 실행할 때 Write-Verbose를 사용할 수있을 것 같지 않습니다. Invoke-Pester 명령을 사용하면 스크립트가 PowerShell 엔진에 의해 직접 실행되기보다는 해석된다는 것을 의미하기 때문에 이것이라고 생각합니다. 차선책은 테스트와 동일한 검사를 수행하는 문을 If에 추가 한 다음 Write-Host 또는 Write-Warning을 사용하여 음수 인 경우 지침을 제공하는 것입니다. 나는 가끔 과거에 그것을 한 적이있다.

스크립트를 직접 실행하는 경우 (예 : * .tests.ps1 파일을 직접 실행하는 경우) -verbose을 사용할 수 있습니다. 그러나 이렇게하려면 [cmdletbinding()]과 Param 블록을 스크립트 맨 위에 추가해야합니다.

[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 } 
    } 
}