moduleSpecmoduleExampleclassConfiguration# Chooses what mock framework to use. Example:## Spec::Runner.configure do |config|# config.mock_with :rspec, :mocha, :flexmock, or :rr# end## To use any other mock framework, you'll have to provide your own# adapter. This is simply a module that responds to the following# methods:## setup_mocks_for_rspec# verify_mocks_for_rspec# teardown_mocks_for_rspec.## These are your hooks into the lifecycle of a given example. RSpec will# call setup_mocks_for_rspec before running anything else in each# Example. After executing the #after methods, RSpec will then call# verify_mocks_for_rspec and teardown_mocks_for_rspec (this is# guaranteed to run even if there are failures in# verify_mocks_for_rspec).## Once you've defined this module, you can pass that to mock_with:## Spec::Runner.configure do |config|# config.mock_with MyMockFrameworkAdapter# end#defmock_with(mock_framework)@mock_framework=casemock_frameworkwhenSymbolmock_framework_path(mock_framework.to_s)elsemock_frameworkendenddefmock_framework# :nodoc:@mock_framework||=mock_framework_path("rspec")end# :call-seq:# include(Some::Helpers)# include(Some::Helpers, More::Helpers)# include(My::Helpers, :type => :key)## Declares modules to be included in multiple example groups# (<tt>describe</tt> blocks). With no :type, the modules listed will be# included in all example groups. Use :type to restrict the inclusion to# a subset of example groups. The value assigned to :type should be a# key that maps to a class that is either a subclass of# Spec::Example::ExampleGroup or extends Spec::Example::ExampleGroupMethods# and includes Spec::Example::ExampleMethods## config.include(My::Pony, My::Horse, :type => :farm)## Only example groups that have that type will get the modules included:## describe "Downtown", :type => :city do# # Will *not* get My::Pony and My::Horse included# end## describe "Old Mac Donald", :type => :farm do# # *Will* get My::Pony and My::Horse included# end#definclude(*args)include_or_extend(:include,*args)enddefextend(*args)include_or_extend(:extend,*args)enddefinclude_or_extend(*args)action=args.shiftargs<<{}unlessHash===args.lastmodules,options=args_and_options(*args)required_example_group=get_type_from_options(options)required_example_group=required_example_group.to_symifrequired_example_groupmodules.eachdo|mod|ExampleGroupFactory.get(required_example_group).send(action,mod)endend# Defines global predicate matchers. Example:## config.predicate_matchers[:swim] = :can_swim?## This makes it possible to say:## person.should swim # passes if person.can_swim? returns true#defpredicate_matchers@predicate_matchers||={}end# Prepends a global <tt>before</tt> block to all example groups.# See #append_before for filtering semantics.defprepend_before(*args,&proc)scope,options=scope_and_options(*args)example_group=ExampleGroupFactory.get(get_type_from_options(options))example_group.prepend_before(scope,&proc)end# Appends a global <tt>before</tt> block to all example groups.## If you want to restrict the block to a subset of all the example# groups then specify this in a Hash as the last argument:## config.prepend_before(:all, :type => :farm)## or## config.prepend_before(:type => :farm)#defappend_before(*args,&proc)scope,options=scope_and_options(*args)example_group=ExampleGroupFactory.get(get_type_from_options(options))example_group.append_before(scope,&proc)endalias_method:before,:append_before# Prepends a global <tt>after</tt> block to all example groups.# See #append_before for filtering semantics.defprepend_after(*args,&proc)scope,options=scope_and_options(*args)example_group=ExampleGroupFactory.get(get_type_from_options(options))example_group.prepend_after(scope,&proc)endalias_method:after,:prepend_after# Appends a global <tt>after</tt> block to all example groups.# See #append_before for filtering semantics.defappend_after(*args,&proc)scope,options=scope_and_options(*args)example_group=ExampleGroupFactory.get(get_type_from_options(options))example_group.append_after(scope,&proc)endprivatedefscope_and_options(*args)args,options=args_and_options(*args)scope=(args[0]||:each),optionsenddefget_type_from_options(options)options[:type]||options[:behaviour_type]enddefmock_framework_path(framework_name)File.expand_path(File.join(File.dirname(__FILE__),"..","..","..","plugins","mock_frameworks",framework_name))endendendend