Module: Cucumber::RbSupport::RbWorld
- Defined in:
- lib/cucumber/rb_support/rb_world.rb
Overview
All steps are run in the context of an object that extends this module.
Instance Attribute Summary collapse
-
#__cucumber_step_mother ⇒ Object
writeonly
Sets the attribute __cucumber_step_mother.
Class Method Summary collapse
Instance Method Summary collapse
-
#__cucumber_invoke(name, multiline_argument = nil) ⇒ Object
Call a step from within a step definition.
-
#announce(announcement) ⇒ Object
Output
announcement
alongside the formatted output. -
#inspect ⇒ Object
The default implementation of Object#inspect recursively traverses all instance variables and invokes inspect.
-
#pending(message = "TODO") ⇒ Object
Mark the matched step as pending.
-
#table(text_or_table, file = nil, line_offset = 0) ⇒ Object
Returns a Cucumber::Ast::Table for
text_or_table
, which can either be a String:.
Instance Attribute Details
#__cucumber_step_mother=(value) ⇒ Object (writeonly)
Sets the attribute __cucumber_step_mother
11 12 13 |
# File 'lib/cucumber/rb_support/rb_world.rb', line 11 def __cucumber_step_mother=(value) @__cucumber_step_mother = value end |
Class Method Details
.alias_adverb(adverb) ⇒ Object
6 7 8 |
# File 'lib/cucumber/rb_support/rb_world.rb', line 6 def alias_adverb(adverb) alias_method adverb, :__cucumber_invoke end |
Instance Method Details
#__cucumber_invoke(name, multiline_argument = nil) ⇒ Object
Call a step from within a step definition. This method is aliased to the same i18n as RbDsl.
15 16 17 18 19 20 21 22 23 |
# File 'lib/cucumber/rb_support/rb_world.rb', line 15 def __cucumber_invoke(name, multiline_argument=nil) #:nodoc: begin step_match = @__cucumber_step_mother.step_match(name) step_match.invoke(multiline_argument) rescue Exception => e e.nested! if Undefined === e raise e end end |
#announce(announcement) ⇒ Object
Output announcement
alongside the formatted output. This is an alternative to using Kernel#puts - it will display nicer, and in all outputs (in case you use several formatters)
Beware that the output will be printed before the corresponding step. This is because the step itself will not be printed until after it has run, so it can be coloured according to its status.
58 59 60 |
# File 'lib/cucumber/rb_support/rb_world.rb', line 58 def announce(announcement) @__cucumber_step_mother.announce(announcement) end |
#inspect ⇒ Object
The default implementation of Object#inspect recursively traverses all instance variables and invokes inspect. This can be time consuming if the object graph is large.
This can cause unnecessary delays when certain exceptions occur. For example, MRI internally invokes #inspect on an object that raises a NoMethodError. (JRuby does not do this).
A World object can have many references created by the user or frameworks (Rails), so to avoid long waiting times on such errors in World we define it to just return a simple String.
88 89 90 |
# File 'lib/cucumber/rb_support/rb_world.rb', line 88 def inspect #:nodoc: sprintf("#<%s:0x%x>", self.class, self.object_id) end |
#pending(message = "TODO") ⇒ Object
Mark the matched step as pending.
63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/cucumber/rb_support/rb_world.rb', line 63 def pending( = "TODO") if block_given? begin yield rescue Exception => e raise Pending.new() end raise Pending.new("Expected pending '#{}' to fail. No Error was raised. No longer pending?") else raise Pending.new() end end |
#table(text_or_table, file = nil, line_offset = 0) ⇒ Object
Returns a Cucumber::Ast::Table for text_or_table
, which can either be a String:
table(%{
| account | description | amount |
| INT-100 | Taxi | 114 |
| CUC-101 | Peeler | 22 |
})
or a 2D Array:
table([
%w{ account description amount },
%w{ INT-100 Taxi 114 },
%w{ CUC-101 Peeler 22 }
])
42 43 44 45 46 47 48 49 |
# File 'lib/cucumber/rb_support/rb_world.rb', line 42 def table(text_or_table, file=nil, line_offset=0) if Array === text_or_table Ast::Table.new(text_or_table) else @table_parser ||= Parser::TableParser.new @table_parser.parse_or_fail(text_or_table.strip, file, line_offset) end end |