Module: Test::Unit::RR::Adapter

Includes:
RR::Adapters::RRMethods, RR::DSL
Included in:
TestCase
Defined in:
lib/test/unit/rr.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(mod) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/test/unit/rr.rb', line 34

def included(mod)
  mod.module_eval do
    setup :before => :prepend
    def setup_rr
      ::Test::Unit::RR::Adapter.reset
    end

    cleanup :after => :append
    def cleanup_rr
      ::RR.verify
    end

    exception_handler do |test_case, exception|
      target_p = exception.is_a?(::RR::Errors::RRError)
      if target_p
        test_case.problem_occurred
        test_case.add_failure(exception.message, exception.backtrace)
      end
      handled = target_p
      handled
    end
  end
end

.resetObject



58
59
60
61
# File 'lib/test/unit/rr.rb', line 58

def reset
  ::RR.reset
  ::RR.trim_backtrace = true
end

Instance Method Details

#assert_received(subject, &block) ⇒ Object



64
65
66
# File 'lib/test/unit/rr.rb', line 64

def assert_received(subject, &block)
  block.call(received(subject)).call
end

#assert_rr { ... } ⇒ Object

Verify double declarations by RR in block. It is useful to clear your double declarations scope.

Examples:

Success case

assert_rr do
  subject = Object.new
  assert_rr do
    mock(subject).should_be_called
    subject.should_be_called
  end
end

Failure case

assert_rr do
  subject = Object.new
  assert_rr do
    mock(subject).should_be_called
    # subject.should_be_called
  end
end

Yields:

  • declares your doubles and uses the doubles in the block. The doubles are verified before and after the block is called.



92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/test/unit/rr.rb', line 92

def assert_rr
  begin
    ::RR.verify
  ensure
    ::Test::Unit::RR::Adapter.reset
  end
  result = yield
  begin
    ::RR.verify
  ensure
    ::Test::Unit::RR::Adapter.reset
  end
  result
end