Module: Macros4Cuke::MacroStepSupport

Defined in:
lib/macros4cuke/macro-step-support.rb

Overview

Mix-in module that should be extending World objects in Cucumber. Synopsis (in env.rb):

require 'macros4cuke' ... # Extend the world object with this module. World(Macros4Cuke::MacroStepSupport)

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#substeps_traceObject (readonly)

The substeps being executed in the scenario represented as text.



19
20
21
# File 'lib/macros4cuke/macro-step-support.rb', line 19

def substeps_trace
  @substeps_trace
end

Instance Method Details

#add_macro(aPhrase, aTemplate, useTable) ⇒ Object

Add a new macro. Pre-condition: there is no existing macro with the same key. the square brackets [...]. of sub-steps. used to pass actual values.

Parameters:

  • aPhrase (String)

    The text that is enclosed between

  • aTemplate (String)

    The text template that consists of a sequence

  • useTable (boolean)

    A flag that indicates whether a table should be



29
30
31
# File 'lib/macros4cuke/macro-step-support.rb', line 29

def add_macro(aPhrase, aTemplate, useTable)
  MacroCollection.instance.add_macro(aPhrase, aTemplate, useTable)
end

#clear_macrosObject

Clear (remove) all the macro-step definitions. After this, we are in the same situation when no macro-step was ever defined.



56
57
58
# File 'lib/macros4cuke/macro-step-support.rb', line 56

def clear_macros()
  MacroCollection.instance.clear
end

#invoke_macro(aPhraseInstance, rawData = nil) ⇒ Object

Invoke a macro with given phrase and (optionally) a table of values That is, the text between [...] and with zero or more actual values. [macro argument name, a value]. Multiple rows with same argument name are acceptable.

Parameters:

  • aPhraseInstance (String)

    an instance of the macro phrase.

  • rawData (Array or nil) (defaults to: nil)

    An Array with couples of the form:



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/macros4cuke/macro-step-support.rb', line 39

def invoke_macro(aPhraseInstance, rawData = nil)
  # Generate a text rendition of the step to be executed.
  collection = MacroCollection.instance
  rendered_steps = collection.render_steps(aPhraseInstance, rawData)
  
  # Keep track of the sub-steps to execute
  @substeps_trace = +'' if @substeps_trace.nil?
  @substeps_trace << rendered_steps
  

  # Let Cucumber execute the sub-steps
  steps(rendered_steps)
end