Book Image

RSpec Essentials

By : Mani Tadayon
Book Image

RSpec Essentials

By: Mani Tadayon

Overview of this book

This book will teach you how to use RSpec to write high-value tests for real-world code. We start with the key concepts of the unit and testability, followed by hands-on exploration of key features. From the beginning, we learn how to integrate tests into the overall development process to help create high-quality code, avoiding the dangers of testing for its own sake. We build up sample applications and their corresponding tests step by step, from simple beginnings to more sophisticated versions that include databases and external web services. We devote three chapters to web applications with rich JavaScript user interfaces, building one from the ground up using behavior-driven development (BDD) and test-driven development (TDD). The code examples are detailed enough to be realistic while simple enough to be easily understood. Testing concepts, development methodologies, and engineering tradeoffs are discussed in detail as they arise. This approach is designed to foster the reader’s ability to make well-informed decisions on their own.
Table of Contents (17 chapters)
RSpec Essentials
About the Author
About the Reviewers

A better configuration manager

First, we'll use a script that does one simple thing. It reads the config file, validates its format, and outputs its contents without any blank lines or comments. The script is significantly more complex than the little snippet we had before, although we're only adding a few modest features. This is a common pattern which should be carefully considered: adding a couple of small features results in a very large increase in complexity. In this case, the added complexity is justified, but we shouldn't make the decision lightly.

The script is called and here is what it contains:

#!/usr/bin/env bash

# Echoes environment variables from a file
# -- ignores comment lines
# -- ignores blank lines
# -- validates format of each line to ensure a proper variable declaration
# -- requires variable names to have a prefix to avoid collisions
# -- skips variables in file if already set, allowing overrides

# safety settings to ensure errors in this script are caught...