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
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Specifying the MMF


Let's start with the two simplest features of a todo list manager: adding items and marking them as completed. We'll also need some support code to set up our specs. Keep in mind that these specs should serve as documentation for the high-level behavior of the todo list manager so it shouldn't look too much like code. Here it is, in a file called todo_feature.rb, located in the spec/features folder. Note that we didn't use the usual convention of ending the file name with _spec.rb since we want to differentiate this from our normal specs:

require_relative '../feature_helper'

RSpec.feature "Manage to-do items", :type => :feature do

    # As an office worker
    # In order to make sure I finish all my tasks for the day
    # And in order to know which tasks are still outstanding
    # I want to add todo items to a list
    # And I want to mark them as completed
  
  include WebInputHelpers
  
  before(:example) { reset_page }
  
  scenario "add" do
    add_item "Learn...