Module: EventedSpec::SpecHelper
- Includes:
- AMQPHelpers::ExampleMethods, CoolioHelpers::ExampleHelpers, EventMachineHelpers::ExampleMethods
- Defined in:
- lib/evented-spec/spec_helper.rb,
lib/evented-spec/evented_example.rb,
lib/evented-spec/spec_helper/amqp_helpers.rb,
lib/evented-spec/spec_helper/amqp_helpers.rb,
lib/evented-spec/evented_example/em_example.rb,
lib/evented-spec/spec_helper/coolio_helpers.rb,
lib/evented-spec/spec_helper/coolio_helpers.rb,
lib/evented-spec/evented_example/amqp_example.rb,
lib/evented-spec/evented_example/coolio_example.rb,
lib/evented-spec/spec_helper/event_machine_helpers.rb,
lib/evented-spec/spec_helper/event_machine_helpers.rb
Overview
EventedSpec::SpecHelper module defines #ampq and #em methods that can be safely used inside your specs (examples) to test code running inside AMQP.start or EM.run loop respectively. Each example is running in a separate event loop, you can control for timeouts either with :spec_timeout option given to #amqp/#em/#coolio method or setting a default timeout using default_timeout(timeout) macro inside describe/context block.
Defined Under Namespace
Modules: AMQPHelpers, CoolioHelpers, EventMachineHelpers, GroupMethods Classes: AMQPExample, CoolioExample, EMExample, EventedExample
Constant Summary
- SpecTimeoutExceededError =
Error which shows in RSpec log when example does not call #done inside of event loop.
Class.new(RuntimeError)
Instance Method Summary (collapse)
-
- (Hash) default_options
Retrieves default options passed in from enclosing example groups.
-
- (Object) delayed(time, &block)
Executes an operation after certain delay.
-
- (Object) done(*args, &block)
Breaks the event loop and finishes the spec.
-
- (Object) timeout(*args)
Manually sets timeout for currently running example.
Methods included from EventMachineHelpers::ExampleMethods
Methods included from CoolioHelpers::ExampleHelpers
Methods included from AMQPHelpers::ExampleMethods
Instance Method Details
- (Hash) default_options
Retrieves default options passed in from enclosing example groups
105 106 107 |
# File 'lib/evented-spec/spec_helper.rb', line 105 def @default_options ||= self.class..dup rescue {} end |
- (Object) delayed(time, &block)
Executes an operation after certain delay
112 113 114 115 116 |
# File 'lib/evented-spec/spec_helper.rb', line 112 def delayed(time, &block) @evented_example.delayed(time) do @example_group_instance.instance_eval(&block) end end |
- (Object) done(*args, &block)
Breaks the event loop and finishes the spec. This should be called after you are reasonably sure that your expectations succeeded. Done yields to any given block first, then stops EM event loop. For amqp specs, stops AMQP and cleans up AMQP state.
You may pass delay (in seconds) to done. If you do so, please keep in mind that your (default or explicit) spec timeout may fire before your delayed done callback is due, leading to SpecTimeoutExceededError
128 129 130 |
# File 'lib/evented-spec/spec_helper.rb', line 128 def done(*args, &block) @evented_example.done *args, &block if @evented_example end |
- (Object) timeout(*args)
Manually sets timeout for currently running example. If spec doesn’t call #done before timeout, it is marked as failed on timeout.
136 137 138 |
# File 'lib/evented-spec/spec_helper.rb', line 136 def timeout(*args) @evented_example.timeout *args if @evented_example end |