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

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Pester is a unit-testing framework for PowerShell, and perhaps the first open-source software product that ships with Windows itself! Author Adam Bertram will walk you through the Pester philosophy, syntax, and numerous real-world examples. We'll cover everything you need to know from knowing nothing about Pester and testing PowerShell scripts to becoming a testing master! Part 1 covers the core syntax of Pester and introduces you to various possible use cases for the different syntax elements. It's enough to get you up and running if you're familiar with unit testing, or if you want to give Pester a spin. Part 2 will take that syntax and dig into the world of unit testing and test-driven development, through a series of real-world walkthroughs. Some of these will be "stream of consciousness," following the actual process someone might use to add or develop Pester tests. This part will also cover using Pester for infrastructure validation in an "infrastructure from code" environment. Part 3 will introduce you to Gherkin. Gherkin is another style of test writing that comes with Pester. This part will introduce you to Gherkin, how it's different than Pester test design and how it integrates with Pester. Part 4 will tackle code coverage, an important topic to help make sure you're testing all of your code but with some not-so-obvious gotchas, you need to watch out for. Part 5 will be more of a "cookbook," with recipes for testing specific types of situations. You will find many different, specific use-cases in here and how to test for them.

Author(s): Adam Bertram
Publisher: LeanPub
Year: 2020

Language: English
Pages: 204

Table of Contents
About This Book
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
Release Notes