The Pester Book: The All-in-One Guide to Understanding and Writing Tests for PowerShell

829 87 1MB

English Pages [281]

Report DMCA / Copyright

DOWNLOAD FILE

The Pester Book: The All-in-One Guide to Understanding and Writing Tests for PowerShell

Table of contents :
About the Author
Foreword
Feedback
Code Samples
Introduction
Testing as Institutional Memory
Testing Drives Better Modularization
Tests as Functional Specifications
Tests in Automated Build Pipelines
Where We’re Not Going
Resources
Part I - Pester Concepts
Block Introduction
Describe Blocks
Context Blocks
It Blocks
Before and After Blocks
Summary
TestDrive and TestRegistry
Using TestDrive
Using TestRegistry
Summary
Assertions
Using the Should Assertion
Understanding Should Operators
Testing Collections
Other Tests
Testing Errors
Adding Custom Assertion Operators
Because
Summary
Test Cases
Creating Tests for Different Parameters
Using the TestCases Parameter
Using the Test Name Token
Summary
Mocking Introduction
Mock Walkthrough
Mock Assertions
Summary
Code Coverage
Why Code Coverage?
Using Pester to Measure Code Coverage
Getting Granular with Code Coverage
Summary
Gherkin
Files
Features
Scenarios
Steps
Step Definitions
Running Gherkin Tests
Summary
Part 2: Using Pester
Controlling Test Results
Pending and Skipped States
Forcing Pass/Fail States
Summary
Working with Pester Output
nUnit XML
Returning Failed Tests as Exit Codes
Summary
Tagging
Introduction to Tagging
Tagging Strategies
Summary
Modules and Dot-Sourced Script Gotchas
Scripts with Functions
Modules
Summary
Advanced Mocking
Mocking Specific Object Types
Mock Scope
Module-Level Mocks
Parameter Filters
Summary
Mocking the Unmockable
.NET Methods
Creating Wrapper Functions
“Overwriting” .NET Methods with a ScriptMethod
Using “Stubbed” Commands
Asserting Mocks “Transitively”
Summary
Improving Code Coverage
Step #1: Getting a Baseline
Step #2: Build the Test Framework
Step #3: Create the Mocks
Step #4: Know the “Before” Code Coverage
Step #5: Build all Tests
Step #6: Re-check Code Coverage
Summary
Infrastructure Testing
Analyzing the Code
Getting Testing Dependencies in Place
Prototyping the Infrastructure Tests
Assessing the Current Environment
Writing the Infrastructure Tests
Dependencies
Operational Validation Framework (OVF)
Summary
Troubleshooting and Debugging
Sending Variables to the Console with Write-Host
Using Debugger Breakpoints During Tests
Summary
Test Walkthrough #1
Analyzing the Code
Refactoring
Deciding What to Test
Find the Shortest Code Path
Creating Test(s) for the Shortest Code Path
Building Tests for Other Code Paths
Summary
Test Walkthrough #2
Understand the Subject
Designing Tests
Writing the Tests
ImportVariables Parameter
ImportModules Parameter
RunspaceTimeout Parameter
Parameter parameter
Summary
Part 3: Hands-On Design and Testing
Buildling Testable Code
Modularization
Limit Function Input
Input Via Parameters
Managing Output Properly
Summary
Test Design Practices
Ensuring Code “State” Doesn’t Change
The Input/Execution/Output Pattern
Choosing When to Create Describe Blocks
Naming Conventions
Summary
Part 4: Pester Cookbook
Recipe: Testing for Live Conditions
Recipe: Testing for Installed Software
Recipe: Ensuring all Functions in a Module Have Tests
Recipe: Testing External Applications
The Background
Testing Exit Codes from Standalone EXE files
Recipe: Testing Syntax
Recipe: Testing Remote Script Blocks
Resources
Video Courses
Articles

Polecaj historie