The basic structure (describe/it)

RSpec is a DSL for creating executable examples of how code is expected to behave, organized in groups. It uses the words “describe” and “it” so we can express concepts like a conversation:

  "Describe an account when it is first opened."
  "It has a balance of zero."

The describe method creates an example group. Within the block passed to describe you can declare nested groups using the describe or context methods, or you can declare examples using the it or specify methods.

Under the hood, an example group is a class in which the block passed to describe or context is evaluated. The blocks passed to it are evaluated in the context of an instance of that class.

One group, one example

Given a file named “sample_spec.rb” with:

RSpec.describe "something" do
  it "does something" do
  end
end

When I run rspec sample_spec.rb -fdoc

Then the output should contain:

something
  does something

Nested example groups (using context)

Given a file named “nestedexamplegroups_spec.rb” with:

RSpec.describe "something" do
  context "in one context" do
    it "does one thing" do
    end
  end

  context "in another context" do
    it "does another thing" do
    end
  end
end

When I run rspec nested_example_groups_spec.rb -fdoc

Then the output should contain:

something
  in one context
    does one thing
  in another context
    does another thing