Pester Crash Kurs

Posted on: 22. Dezember 2021
Alle Infos die du brauchst um das Video erfolgreich umzusetzen:
In diesem ausführlichen Crash Kurs schauen wir uns ALLE Möglichkeiten von Pester Version 5.x an, damit du dies sofort für dich selbst nutzen kannst. Das allgemeinte Thema wird also sein, Test Driven Development (TDD), was eine wichtige Strömung in der Entwicklung von Code und Software allgemein darstellt. Somit erreichen wir die höchst Mögliche Qualität und Nachhaltigkeit.

Wir sind offen und gespannt auf deine Anregungen: Input-Formular
Am einfachsten schaust du das Video und hast dazu diesen Code offen. So kannst du auch den Code in deiner gewünschten Grösse darstellen und kannst dem Video einfacher folgen.
——————————————–
# Testen ob Pester min. Version 5 vorhanden ist            
Describe "Allgemein: Pester Version 5 muss zum testen vorhanden sein" -Tag "Pester" {            
    It "Minimum Version 5 vom Pester Modul muss vorhanden sein, sonst funktionieren die Befehle nicht" {            
        (Get-Module pester).Version.Major | Should -BeGreaterOrEqual 5               
    } -Tag "Pester"            
}            
            
# Beschreiben der Testreihe            
Describe "1. Ziel soll getestet werden" {            
    # Umgebung 1 wird abgearbeitet            
    Context "Tests mit Be stimmen weitgehenst, bis auf CaseSensitive (Gross- / Kleinschreibung)" -Tag "Umgebung" {            
            "Aktueller Wert" | Should -Be "aktueller wert" # Stimmt            
        }            
            
    Context "Tests mit BeExactly müssen ganz genau stimmen auch Gross- / Kleinschreibung" {            
            "Aktueller Wert" | Should -BeExactly "aktueller wert" # Stimmt nicht            
            "Aktueller Wert" | Should -BeExactly "Aktueller Wert" # Stimmt            
        }            
            
    Context "Tests mit BeFalse und BeTrue müssen $false bzw. $true sein" {            
            $false | Should -BeFalse # Stimmt            
            $null | Should -BeFalse # Stimmt nicht            
            $true | Should -BeTrue # Stimmt            
            $false | Should -BeTrue # Stimmt nicht            
        }            
            
    Context "Zahlen nach Grösse vergleichen" {            
            5 | Should -BeGreaterThan 3 # Stimmt            
            5 | Should -BeGreaterOrEqual 5 # Stimmt            
            5 | Should -BeLessOrEqual 4 # Stimmt nicht            
            2 | Should -BeLessThan 3 # Stimmt               
         }            
            
    Context "Array's können mit BeIn oder Contain getestet werden, je nach Reihenfolge" {            
             "hallo" | Should -BeIn @("hallo","welt","gruss") # Stimmt            
             27 | Should -BeIn (20..30) # Stimmt            
             "x","y","z" | Should -Contain "x" # Stimmt            
             1..100 | Should -Contain 120 # Stimmt nicht            
         }            
            
    Context "Prüfen ob eine Datei oder ein Ordner vorhanden ist kann man mit Exist" {            
             "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" | Should -Exist # Stimmt            
         }            
            
    Context "Den DateiInhalt können wir auch Prüfen" {            
            $MeinInhalt = "Hallo Welt"            
            $MeineDatei = "$($env:TEMP)\pestertest.txt"            

            Set-Content -Path $MeineDatei -Value $MeinInhalt            

            $MeineDatei | Should -FileContentMatch "hallo welt" # Stimmt            
            $MeineDatei | Should -FileContentMatchExactly "hallo welt" # Stimmt nicht            
            $MeinInhalt = "Ich bin die erste Zeile.´nIch bin die zweite."            

            Set-Content -Path $MeineDatei -Value $MeinInhalt -NoNewline            

            $MeineDatei | Should -FileContentMatchMultiline 'erste Zeile\.\r?\nIch' # Stimmt mittels RegEx                       
        }            
            
    Context "Wir können auch mit Platzhaltern ** testen" {            
            "Hallo meine Welt" | Should -BeLike "*Meine*" # Stimmt            
            "Hallo meine Welt" | Should -BeLikeExactly "*Meine*" # Stimmt nicht            
        }            

    Context "Auch auf leeren Inhalt bzw. Null können wir testen" {            
            "" | Should -BeNullOrEmpty # Stimmt            
            $null | Should -BeNullOrEmpty # Stimmt            
            " " | Should -BeNullOrEmpty # Stimmt            
        }            
            
    Context "Nun prüfen wir ob der Objekt Typ stimmt"{            
            "Hallo Welt" | Should -BeOfType System.String # Stimmt            
            "1234" | Should -BeOfType System.Int32 # Stimmt            
            Get-ChildItem "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" | Should -BeOfType System.IO.FileSystemInfo # Stimmt            
            "a","b","c" | Should -BeOfType System.Array # Stimmt            
        }            
            
    Context "Bei Array's können wir sogar testen ob die gewünschte Anzahl Elemente zurückkommt" {            
            (1..3) | Should -HaveCount 3 # Stimmt            
            (1..3) | Should -HaveCount 5 # Stimmt nicht            
        }            

    Context "Bei Funktionen und Befehlen können wir auf bestimmte Parameter prüfen" {            
            Get-Command Get-ChildItem | Should -HaveParameter Path # Stimmt            
            Get-Command Get-ChildItem | Should -HaveParameter Path -Mandatory # Stimmt nicht            
            Get-Command Get-ChildItem | Should -Not -HaveParameter Hans # Stimmt            
        }            
            
}
——————————————–
Hat dir das Video gefallen und etwas gebracht, dann freuen wir uns immer auf dein Feedback. Daumen nach oben, Kommentar und Abo sind geeignete Mittel um das auszudrücken. Falls du kannst, mache doch auch deine Kollegen auf unseren Kanal aufmerksam. Denn so wachsen wir zusammen stetig weiter und das freut uns alle. Win-Win-Win.
Falls du spezielle Anforderungen an Scripts oder Auftragsarbeiten hast, kannst du mich gerne direkt per Email erreichen. Alle Infos dazu sind hier Kontakt
Ich hoffe du verstehst, dass ich nur Videos zu Themen machen kann, die ein grösseres Interesse von verschiedenen Leuten haben. Benutzerspezifische Scripts erstelle ich ausschliesslich als Auftragsarbeiten oder im Mandat.

Da wir sämtliche Videos kostenlos zur Verfügung stellen und auch keine Werbung reinpacken, sind wir immer froh für eine kleine Spende. Vielen Dank bereits dafür.