Public/Get-Weather.Tests.ps1
BeforeAll -Scriptblock { . $PSCommandPath.Replace('.Tests.ps1', '.ps1') } Describe -Name "Get-Weather" -Fixture { It -Name 'Default 1' { # Gibt Wetterdaten für einen gültigen Standort zurück, wenn kein Standort angegeben wird $result = Get-Weather $result | Should -Not -BeNullOrEmpty } It -Name 'Default 2' { # Gibt Wetterdaten für 3 Tage zurück, wenn kein Standort angegeben wird $result = Get-Weather | Select-String -Pattern 'Früh' -AllMatches | Select-Object -ExpandProperty Matches | Measure-Object $result.Count | Should -Be 3 } It -Name "Default 3" { # Gibt Wetterdaten in der OS Sprache zurück $result = Get-Weather -Location Köln -OnlyCurrentWeather $result | Should -MatchExactly 'Wetterbericht für: Köln' } It -Name '-Location 1' { # Gibt Wetterdaten für einen gültigen Standort zurück $result = Get-Weather -Location Köln $result | Should -Not -BeNullOrEmpty } It -Name '-Location 2' { # Gibt einen Fehler zurück, wenn ein ungültiger Standort angegeben wird { Get-Weather -Location Unbekannter_Ort } | Should -Throw -ExpectedMessage "We were unable to find your location or could not retrieve weather data. Please check your internet connection or the location provided." } It -Name '-OnlyCurrentWeather 1' { # Gibt Wetterdaten für einen gültigen Standort zurück, wenn nur aktuelle Wetterdaten angefordert werden $result = Get-Weather -Location Köln -OnlyCurrentWeather $result | Should -Not -BeNullOrEmpty } $testCases = @( @{Location = 'Würzburg'; ExpectedResult = '^Wetterbericht für: Würzburg' } @{Location = 'London' ; ExpectedResult = '^Wetterbericht für: London' } @{Location = 'Αθήνα' ; ExpectedResult = '^Wetterbericht für: Αθήνα' } ) It -Name "TestCase 1 <Location>" -ForEach $testCases -Test { param([string]$Location, [string]$ExpectedResult) $result = Get-Weather -Location $Location -OnlyCurrentWeather $result | Should -MatchExactly $ExpectedResult } } <# Clear-Host $config = New-PesterConfiguration $config.Run.Path = ".\Get-Weather.Tests.ps1" $config.CodeCoverage.Enabled = $true $config.CodeCoverage.OutputFormat = 'CoverageGutters' $config.CodeCoverage.Path = ".\Get-Weather.ps1" $config.CodeCoverage.OutputPath = ".\Get-Weather.CodeCoverage.xml" $config.CodeCoverage.CoveragePercentTarget = 90 $config.Output.Verbosity = 'Detailed' Invoke-Pester -Configuration $config #> |