module Spec # == Example Groups and Code Examples # # A Code Example is an executable example of how a bit of code is expected # to behave. # # An Example Group is a group of code examples. # # RSpec exposes a DSL to describe groups of examples. # # describe Account do # it "should have a balance of $0" do # account = Account.new # account.balance.should == Money.new(0, :dollars) # end # end # # == Before and After # # You can use the before() and after() methods to extract # common code within an Example Group. Both methods take an optional scope # argument so you can run the block before :each example or before :all # examples # # describe "..." do # before :all do # ... # end # # before :each do # ... # end # # it "should do something" do # ... # end # # it "should do something else" do # ... # end # # after :each do # ... # end # # after :all do # ... # end # # end # # The before :each block will run before each of the examples, once # for each example. Likewise, the after :each block will run after # each of the examples. # # It is also possible to specify a before :all and after # :all block that will run only once for each example group, before the # first before :each and after the last after # :each respectively. The use of these is generally discouraged, # because it introduces dependencies between the examples. Still, it might # prove useful for very expensive operations if you know what you are doing. # # == Local helper methods # # You can include local helper methods by simply expressing them within an # example group: # # describe "..." do # # it "..." do # helper_method # end # # def helper_method # ... # end # # end # # == Included helper methods # # You can include helper methods in multiple example groups by expressing # them within a module, and then including that module in your example # groups: # # module AccountExampleHelperMethods # def helper_method # ... # end # end # # describe "A new account" do # include AccountExampleHelperMethods # before do # @account = Account.new # end # # it "should have a balance of $0" do # helper_method # @account.balance.should eql(Money.new(0, :dollars)) # end # end # # == Shared Example Groups # # You can define a shared example group, that may be used on other groups # # share_examples_for "All Editions" do # it "all editions behaviour" ... # end # # describe SmallEdition do # it_should_behave_like "All Editions" # # it "should do small edition stuff" do # ... # end # end # # You can also assign the shared group to a module and include that # # share_as :AllEditions do # it "should do all editions stuff" ... # end # # describe SmallEdition do # it_should_behave_like AllEditions # # it "should do small edition stuff" do # ... # end # end # # And, for those of you who prefer to use something more like Ruby, you can # just include the module directly # # describe SmallEdition do # include AllEditions # # it "should do small edition stuff" do # ... # end # end module Example end end require 'timeout' require 'spec/example/args_and_options' require 'spec/example/predicate_matchers' require 'spec/example/example_group_proxy' require 'spec/example/example_proxy' require 'spec/example/subject' require 'spec/example/before_and_after_hooks' require 'spec/example/pending' require 'spec/example/module_reopening_fix' require 'spec/example/example_group_hierarchy' require 'spec/example/example_group_methods' require 'spec/example/example_methods' require 'spec/example/example_group' require 'spec/example/shared_example_group' require 'spec/example/example_group_factory' require 'spec/example/errors' require 'spec/example/example_matcher'