Class: FlexMock::Recorder
- Includes:
- ArgumentTypes
- Defined in:
- lib/gems/flexmock-0.8.3/lib/flexmock/recorder.rb
Overview
Translate arbitrary method calls into expectations on the given mock object.
Instance Method Summary collapse
-
#initialize(mock) ⇒ Recorder
constructor
Create a method recorder for the mock
mock
. -
#method_missing(sym, *args, &block) ⇒ Object
Record an expectation for receiving the method
sym
with the given arguments. -
#should_be_strict(is_strict = true) ⇒ Object
Place the record in strict mode.
-
#strict? ⇒ Boolean
Is the recorder in strict mode?.
Methods included from ArgumentTypes
Constructor Details
#initialize(mock) ⇒ Recorder
Create a method recorder for the mock mock
.
24 25 26 27 |
# File 'lib/gems/flexmock-0.8.3/lib/flexmock/recorder.rb', line 24 def initialize(mock) @mock = mock @strict = false end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args, &block) ⇒ Object
Record an expectation for receiving the method sym
with the given arguments.
59 60 61 62 63 64 65 66 67 68 |
# File 'lib/gems/flexmock-0.8.3/lib/flexmock/recorder.rb', line 59 def method_missing(sym, *args, &block) expectation = @mock.should_receive(sym).and_return(&block) if strict? args = args.collect { |arg| eq(arg) } expectation.with(*args).ordered.once else expectation.with(*args) end expectation end |
Instance Method Details
#should_be_strict(is_strict = true) ⇒ Object
Place the record in strict mode. While recording expectations in strict mode, the following will be true.
-
All expectations will be expected in the order they were recorded.
-
All expectations will be expected once.
-
All arguments will be placed in exact match mode, including regular expressions and class objects.
Strict mode is usually used when giving the recorder to a known good algorithm. Strict mode captures the exact sequence of calls and validate that the code under test performs the exact same sequence of calls.
The recorder may exit strict mode via a should_be_strict(false)
call. Non-strict expectations may be recorded at that point, or even explicit expectations (using should_receieve
) can be specified.
48 49 50 |
# File 'lib/gems/flexmock-0.8.3/lib/flexmock/recorder.rb', line 48 def should_be_strict(is_strict=true) @strict = is_strict end |
#strict? ⇒ Boolean
Is the recorder in strict mode?
53 54 55 |
# File 'lib/gems/flexmock-0.8.3/lib/flexmock/recorder.rb', line 53 def strict? @strict end |