mocha 0.3.3 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. data/README +4 -4
  2. data/RELEASE +32 -0
  3. data/Rakefile +3 -3
  4. data/examples/misc.rb +36 -0
  5. data/examples/mocha.rb +26 -0
  6. data/examples/stubba.rb +65 -0
  7. data/lib/mocha.rb +17 -5
  8. data/lib/{stubba → mocha}/any_instance_method.rb +2 -2
  9. data/lib/mocha/auto_verify.rb +7 -7
  10. data/lib/{stubba → mocha}/central.rb +2 -2
  11. data/lib/{stubba → mocha}/class_method.rb +7 -10
  12. data/lib/mocha/expectation.rb +88 -33
  13. data/lib/mocha/expectation_error.rb +6 -0
  14. data/lib/mocha/inspect.rb +1 -1
  15. data/lib/mocha/instance_method.rb +8 -0
  16. data/lib/mocha/metaclass.rb +1 -1
  17. data/lib/mocha/mock.rb +8 -8
  18. data/lib/mocha/mock_methods.rb +60 -16
  19. data/lib/{stubba → mocha}/object.rb +8 -10
  20. data/lib/mocha/setup_and_teardown.rb +23 -0
  21. data/lib/mocha/standalone.rb +30 -0
  22. data/lib/mocha/test_case_adapter.rb +49 -0
  23. data/lib/mocha_standalone.rb +2 -0
  24. data/lib/stubba.rb +2 -8
  25. data/test/all_tests.rb +9 -10
  26. data/test/method_definer.rb +2 -2
  27. data/test/{stubba → mocha}/any_instance_method_test.rb +1 -3
  28. data/test/mocha/auto_verify_test.rb +9 -10
  29. data/test/{stubba → mocha}/central_test.rb +5 -4
  30. data/test/{stubba → mocha}/class_method_test.rb +40 -10
  31. data/test/mocha/expectation_test.rb +144 -67
  32. data/test/mocha/inspect_test.rb +12 -1
  33. data/test/mocha/metaclass_test.rb +22 -0
  34. data/test/mocha/mock_methods_test.rb +65 -7
  35. data/test/mocha/mock_test.rb +41 -4
  36. data/test/{stubba → mocha}/object_test.rb +9 -9
  37. data/test/mocha/setup_and_teardown_test.rb +76 -0
  38. data/test/mocha_acceptance_test.rb +8 -8
  39. data/test/mocha_test_result_integration_test.rb +5 -6
  40. data/test/standalone_acceptance_test.rb +110 -0
  41. data/test/stubba_acceptance_test.rb +2 -2
  42. data/test/stubba_integration_test.rb +17 -24
  43. data/test/stubba_test_result_integration_test.rb +5 -6
  44. metadata +22 -18
  45. data/lib/shared/backtracefilter.rb +0 -46
  46. data/lib/smart_test_case.rb +0 -5
  47. data/lib/smart_test_case/multiple_setup_and_teardown.rb +0 -123
  48. data/lib/stubba/instance_method.rb +0 -18
  49. data/lib/stubba/setup_and_teardown.rb +0 -25
  50. data/test/smart_test_case/multiple_setup_and_teardown_test.rb +0 -192
  51. data/test/stubba/instance_method_test.rb +0 -46
  52. data/test/stubba/setup_and_teardown_test.rb +0 -134
@@ -1,5 +1,6 @@
1
1
  require File.join(File.dirname(__FILE__), "..", "test_helper")
2
2
  require 'mocha/inspect'
3
+ require 'method_definer'
3
4
 
4
5
  class InspectTest
5
6
  def self.suite
@@ -17,7 +18,17 @@ class ObjectInspectTest < Test::Unit::TestCase
17
18
 
18
19
  def test_should_provide_custom_representation_of_object
19
20
  object = Object.new
20
- assert_equal "#<#{object.class}: #{object.object_id}>", object.mocha_inspect
21
+ assert_equal "#<#{object.class}:#{"0x%x" % object.__id__}>", object.mocha_inspect
22
+ end
23
+
24
+ def test_should_use_underscored_id_instead_of_object_id_or_id_so_that_they_can_be_stubbed
25
+ object = Object.new
26
+ object.define_instance_accessor(:called)
27
+ object.called = false
28
+ object.replace_instance_method(:object_id) { self.called = true; 1 }
29
+ object.replace_instance_method(:id) { self.called = true; 1 }
30
+ object.mocha_inspect
31
+ assert_equal false, object.called
21
32
  end
22
33
 
23
34
  end
@@ -0,0 +1,22 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'mocha/metaclass'
3
+
4
+ class MetaclassTest < Test::Unit::TestCase
5
+
6
+ def test_should_return_objects_singleton_class
7
+ object = Object.new
8
+ assert_raises(NoMethodError) { object.success? }
9
+
10
+ object = Object.new
11
+ assert object.__metaclass__.ancestors.include?(Object)
12
+ assert object.__metaclass__.ancestors.include?(Kernel)
13
+ assert object.__metaclass__.is_a?(Class)
14
+
15
+ object.__metaclass__.class_eval { def success?; true; end }
16
+ assert object.success?
17
+
18
+ object = Object.new
19
+ assert_raises(NoMethodError) { object.success? }
20
+ end
21
+
22
+ end
@@ -49,7 +49,17 @@ class MockMethodsTest < Test::Unit::TestCase
49
49
  expectation1 = mock.expects(:my_method).with(:argument1, :argument2)
50
50
  expectation2 = mock.expects(:my_method).with(:argument3, :argument4)
51
51
 
52
- assert_equal expectation2, mock.matching_expectation(:my_method, :argument3, :argument4)
52
+ assert_same expectation2, mock.matching_expectation(:my_method, :argument3, :argument4)
53
+ end
54
+
55
+ def test_should_find_most_recent_matching_expectation
56
+ mock = Object.new
57
+ mock.extend(MockMethods)
58
+
59
+ expectation1 = mock.expects(:my_method).with(:argument1, :argument2)
60
+ expectation2 = mock.expects(:my_method).with(:argument1, :argument2)
61
+
62
+ assert_same expectation2, mock.matching_expectation(:my_method, :argument1, :argument2)
53
63
  end
54
64
 
55
65
  def test_should_invoke_expectation_and_return_result
@@ -67,7 +77,7 @@ class MockMethodsTest < Test::Unit::TestCase
67
77
  mock.extend(MockMethods)
68
78
 
69
79
  result = nil
70
- assert_nothing_raised(Test::Unit::AssertionFailedError) do
80
+ assert_nothing_raised(ExpectationError) do
71
81
  result = mock.unexpected_method
72
82
  end
73
83
  assert_nil result
@@ -84,7 +94,7 @@ class MockMethodsTest < Test::Unit::TestCase
84
94
  def test_should_raise_assertion_error_for_unexpected_method_call
85
95
  mock = Object.new
86
96
  mock.extend(MockMethods)
87
- error = assert_raise(Test::Unit::AssertionFailedError) do
97
+ error = assert_raise(ExpectationError) do
88
98
  mock.unexpected_method_called(:my_method, :argument1, :argument2)
89
99
  end
90
100
  assert_match /my_method/, error.message
@@ -129,16 +139,16 @@ class MockMethodsTest < Test::Unit::TestCase
129
139
  mock.expects(:method1)
130
140
  mock.expects(:method2)
131
141
  mock.method1
132
- assert_raise(Test::Unit::AssertionFailedError) do
142
+ assert_raise(ExpectationError) do
133
143
  mock.verify
134
144
  end
135
145
  end
136
146
 
137
147
  def test_should_report_possible_expectations
138
148
  mock = Object.new.extend(MockMethods)
139
- mock.expects(:meth).with(1)
140
- exception = assert_raise(Test::Unit::AssertionFailedError) { mock.meth(2) }
141
- assert_equal "Unexpected message :meth(2) sent to #{mock.mocha_inspect}\nSimilar expectations :meth(1)", exception.message
149
+ mock.expects(:expected_method).with(1)
150
+ exception = assert_raise(ExpectationError) { mock.expected_method(2) }
151
+ assert_equal "#{mock.mocha_inspect}.expected_method(2) - expected calls: 0, actual calls: 1\nSimilar expectations:\nexpected_method(1)", exception.message
142
152
  end
143
153
 
144
154
  def test_should_pass_block_through_to_expectations_verify_method
@@ -174,4 +184,52 @@ class MockMethodsTest < Test::Unit::TestCase
174
184
  assert_equal false, mock.respond_to?(:method1)
175
185
  end
176
186
 
187
+ def test_should_set_up_multiple_expectations_with_return_values
188
+ mock = Object.new
189
+ mock.extend(MockMethods)
190
+ mock.expects(:method1 => :result1, :method2 => :result2)
191
+ assert_equal :result1, mock.method1
192
+ assert_equal :result2, mock.method2
193
+ end
194
+
195
+ def test_should_set_up_multiple_stubs_with_return_values
196
+ mock = Object.new
197
+ mock.extend(MockMethods)
198
+ mock.stubs(:method1 => :result1, :method2 => :result2)
199
+ assert_equal :result1, mock.method1
200
+ assert_equal :result2, mock.method2
201
+ end
202
+
203
+ def test_should_match_most_recent_call_to_expects
204
+ mock = Object.new
205
+ mock.extend(MockMethods)
206
+ mock.expects(:method1).returns(0)
207
+ mock.expects(:method1).returns(1)
208
+ assert_equal 1, mock.method1
209
+ end
210
+
211
+ def test_should_match_most_recent_call_to_stubs
212
+ mock = Object.new
213
+ mock.extend(MockMethods)
214
+ mock.stubs(:method1).returns(0)
215
+ mock.stubs(:method1).returns(1)
216
+ assert_equal 1, mock.method1
217
+ end
218
+
219
+ def test_should_match_call_to_expects_with_previous_call_to_stubs
220
+ mock = Object.new
221
+ mock.extend(MockMethods)
222
+ mock.stubs(:method1).returns(0)
223
+ mock.expects(:method1).returns(1)
224
+ assert_equal 1, mock.method1
225
+ end
226
+
227
+ def test_should_match_call_to_stubs_with_previous_call_to_expects
228
+ mock = Object.new
229
+ mock.extend(MockMethods)
230
+ mock.expects(:method1).returns(0)
231
+ mock.stubs(:method1).returns(1)
232
+ assert_equal 1, mock.method1
233
+ end
234
+
177
235
  end
@@ -1,5 +1,6 @@
1
1
  require File.join(File.dirname(__FILE__), "..", "test_helper")
2
2
  require 'mocha/mock'
3
+ require 'mocha/expectation_error'
3
4
 
4
5
  class MockTest < Test::Unit::TestCase
5
6
 
@@ -12,7 +13,7 @@ class MockTest < Test::Unit::TestCase
12
13
  def test_should_set_single_expectation
13
14
  mock = Mock.new
14
15
  mock.expects(:method1).returns(1)
15
- assert_nothing_raised(Test::Unit::AssertionFailedError) do
16
+ assert_nothing_raised(ExpectationError) do
16
17
  assert_equal 1, mock.method1
17
18
  end
18
19
  end
@@ -34,14 +35,50 @@ class MockTest < Test::Unit::TestCase
34
35
  assert_equal true, mock.stub_everything
35
36
  end
36
37
 
37
- def test_should_use_default_inspect_message
38
+ def test_should_display_object_id_for_inspect_if_mock_has_no_name
38
39
  mock = Mock.new
39
- assert_equal mock.mocha_inspect_before_hijacked_by_named_mocks, mock.mocha_inspect
40
+ assert_match Regexp.new("#<Mock:0x[0-9A-Fa-f]{6}>"), mock.mocha_inspect
40
41
  end
41
42
 
43
+ def test_should_display_name_for_inspect_if_mock_has_name
44
+ mock = Mock.new(false, 'named_mock')
45
+ assert_equal "#<Mock:named_mock>", mock.mocha_inspect
46
+ end
47
+
42
48
  def test_should_give_name_in_inspect_message
43
49
  mock = Mock.new(false, 'named_mock')
44
- assert_equal "#<Mock: 'named_mock'>", mock.mocha_inspect
50
+ assert_equal "#<Mock:named_mock>", mock.mocha_inspect
51
+ end
52
+
53
+ def test_should_be_able_to_extend_mock_object_with_module
54
+ mock = Mock.new
55
+ assert_nothing_raised(ExpectationError) { mock.extend(Module.new) }
56
+ end
57
+
58
+ def test_should_be_equal
59
+ mock = Mock.new
60
+ assert_equal true, mock.eql?(mock)
61
+ end
62
+
63
+ def test_should_be_able_to_mock_standard_object_methods
64
+ mock = Mock.new
65
+ object_methods = Object.public_instance_methods.reject { |m| m =~ /^__.*__$/ }.sort
66
+ object_methods.each { |method| mock.__expects__(method.to_sym).returns(method) }
67
+ object_methods.each { |method| assert_equal method, mock.__send__(method.to_sym) }
68
+ assert_nothing_raised(ExpectationError) { mock.verify }
69
+ end
70
+
71
+ def test_should_be_able_to_stub_standard_object_methods
72
+ mock = Mock.new
73
+ object_methods = Object.public_instance_methods.reject { |m| m =~ /^__.*__$/ }.sort
74
+ object_methods.each { |method| mock.__stubs__(method.to_sym).returns(method) }
75
+ object_methods.each { |method| assert_equal method, mock.__send__(method.to_sym) }
76
+ end
77
+
78
+ def test_should_respond_to_expected_methods
79
+ mock = Mock.new
80
+ mock.expects(:method1)
81
+ assert_equal true, mock.respond_to?(:method1)
45
82
  end
46
83
 
47
84
  end
@@ -2,7 +2,7 @@ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
2
  require 'mocha/mock'
3
3
  require 'method_definer'
4
4
 
5
- require 'stubba/object'
5
+ require 'mocha/object'
6
6
 
7
7
  class ObjectTest < Test::Unit::TestCase
8
8
 
@@ -30,7 +30,7 @@ class ObjectTest < Test::Unit::TestCase
30
30
  def test_should_stub_instance_method
31
31
  instance = Object.new
32
32
  $stubba = Mock.new
33
- $stubba.expects(:stub).with(Stubba::InstanceMethod.new(instance, :method1))
33
+ $stubba.expects(:stub).with(Mocha::InstanceMethod.new(instance, :method1))
34
34
  instance.expects(:method1)
35
35
  $stubba.verify
36
36
  end
@@ -48,7 +48,7 @@ class ObjectTest < Test::Unit::TestCase
48
48
  $stubba = Mock.new
49
49
  $stubba.stubs(:stub)
50
50
  instance.expects(:method1).with(:value1, :value2)
51
- assert_raise(Test::Unit::AssertionFailedError) { instance.verify }
51
+ assert_raise(ExpectationError) { instance.verify }
52
52
  end
53
53
 
54
54
  def test_should_pass_backtrace_into_expects
@@ -96,7 +96,7 @@ class ObjectTest < Test::Unit::TestCase
96
96
  def test_should_stub_class_method
97
97
  klass = Class.new
98
98
  $stubba = Mock.new
99
- $stubba.expects(:stub).with(Stubba::ClassMethod.new(klass, :method1))
99
+ $stubba.expects(:stub).with(Mocha::ClassMethod.new(klass, :method1))
100
100
  klass.expects(:method1)
101
101
  $stubba.verify
102
102
  end
@@ -112,7 +112,7 @@ class ObjectTest < Test::Unit::TestCase
112
112
  def test_should_stub_module_method
113
113
  mod = Module.new
114
114
  $stubba = Mock.new
115
- $stubba.expects(:stub).with(Stubba::ClassMethod.new(mod, :method1))
115
+ $stubba.expects(:stub).with(Mocha::ClassMethod.new(mod, :method1))
116
116
  mod.expects(:method1)
117
117
  $stubba.verify
118
118
  end
@@ -126,19 +126,19 @@ class ObjectTest < Test::Unit::TestCase
126
126
  end
127
127
 
128
128
  def test_should_use_stubba_instance_method_for_object
129
- assert_equal Stubba::InstanceMethod, Object.new.stubba_method
129
+ assert_equal Mocha::InstanceMethod, Object.new.stubba_method
130
130
  end
131
131
 
132
132
  def test_should_use_stubba_class_method_for_module
133
- assert_equal Stubba::ClassMethod, Module.new.stubba_method
133
+ assert_equal Mocha::ClassMethod, Module.new.stubba_method
134
134
  end
135
135
 
136
136
  def test_should_use_stubba_class_method_for_class
137
- assert_equal Stubba::ClassMethod, Class.new.stubba_method
137
+ assert_equal Mocha::ClassMethod, Class.new.stubba_method
138
138
  end
139
139
 
140
140
  def test_should_use_stubba_class_method_for_any_instance
141
- assert_equal Stubba::AnyInstanceMethod, Class::AnyInstance.new(nil).stubba_method
141
+ assert_equal Mocha::AnyInstanceMethod, Class::AnyInstance.new(nil).stubba_method
142
142
  end
143
143
 
144
144
  def test_should_stub_self_for_object
@@ -0,0 +1,76 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'mocha/mock'
3
+
4
+ require 'mocha/setup_and_teardown'
5
+
6
+ class SetupAndTeardownTest < Test::Unit::TestCase
7
+
8
+ include Mocha
9
+
10
+ def test_should_instantiate_new_stubba
11
+ test_case = stubbed_test_case_class.new
12
+ test_case.setup_stubs
13
+
14
+ assert $stubba
15
+ assert $stubba.is_a?(Mocha::Central)
16
+ end
17
+
18
+ def test_should_verify_all_expectations
19
+ test_case = stubbed_test_case_class.new
20
+ stubba = Mock.new
21
+ stubba.expects(:verify_all)
22
+ $stubba = stubba
23
+
24
+ test_case.verify_stubs
25
+
26
+ stubba.verify
27
+ end
28
+
29
+ def test_should_yield_to_block_for_each_assertion
30
+ test_case = stubbed_test_case_class.new
31
+ $stubba = Mock.new
32
+ $stubba.stubs(:verify_all).yields
33
+ yielded = false
34
+
35
+ test_case.verify_stubs { yielded = true }
36
+
37
+ assert_equal true, yielded
38
+ end
39
+
40
+ def test_should_unstub_all_stubbed_methods
41
+ test_case = stubbed_test_case_class.new
42
+ stubba = Mock.new
43
+ stubba.expects(:unstub_all)
44
+ $stubba = stubba
45
+
46
+ test_case.teardown_stubs
47
+
48
+ stubba.verify
49
+ end
50
+
51
+ def test_should_set_stubba_to_nil
52
+ test_case = stubbed_test_case_class.new
53
+ $stubba = Mock.new
54
+ $stubba.stubs(:unstub_all)
55
+
56
+ test_case.teardown_stubs
57
+
58
+ assert_nil $stubba
59
+ end
60
+
61
+ def test_should_not_raise_exception_if_no_stubba_central_available
62
+ test_case = stubbed_test_case_class.new
63
+ $stubba = nil
64
+ assert_nothing_raised { test_case.teardown_stubs }
65
+ end
66
+
67
+ private
68
+
69
+ def stubbed_test_case_class
70
+ Class.new do
71
+ include Mocha::SetupAndTeardown
72
+ end
73
+ end
74
+
75
+ end
76
+
@@ -36,8 +36,8 @@ class MochaAcceptanceTest < Test::Unit::TestCase
36
36
  end
37
37
 
38
38
  def test_should_step_both_tracks_forward_ten_steps
39
- left_track = mock()
40
- right_track = mock()
39
+ left_track = mock('left_track')
40
+ right_track = mock('right_track')
41
41
  steps_per_metre = 5
42
42
  rover = Rover.new(left_track, right_track, steps_per_metre, nil)
43
43
 
@@ -51,8 +51,8 @@ class MochaAcceptanceTest < Test::Unit::TestCase
51
51
  end
52
52
 
53
53
  def test_should_step_both_tracks_backward_ten_steps
54
- left_track = mock()
55
- right_track = mock()
54
+ left_track = mock('left_track')
55
+ right_track = mock('right_track')
56
56
  steps_per_metre = 5
57
57
  rover = Rover.new(left_track, right_track, steps_per_metre, nil)
58
58
 
@@ -66,8 +66,8 @@ class MochaAcceptanceTest < Test::Unit::TestCase
66
66
  end
67
67
 
68
68
  def test_should_step_left_track_forwards_five_steps_and_right_track_backwards_five_steps
69
- left_track = mock()
70
- right_track = mock()
69
+ left_track = mock('left_track')
70
+ right_track = mock('right_track')
71
71
  steps_per_degree = 5.0 / 90.0
72
72
  rover = Rover.new(left_track, right_track, nil, steps_per_degree)
73
73
 
@@ -81,8 +81,8 @@ class MochaAcceptanceTest < Test::Unit::TestCase
81
81
  end
82
82
 
83
83
  def test_should_step_left_track_backwards_five_steps_and_right_track_forwards_five_steps
84
- left_track = mock()
85
- right_track = mock()
84
+ left_track = mock('left_track')
85
+ right_track = mock('right_track')
86
86
  steps_per_degree = 5.0 / 90.0
87
87
  rover = Rover.new(left_track, right_track, nil, steps_per_degree)
88
88
 
@@ -1,11 +1,10 @@
1
1
  require 'test_helper'
2
- require 'smart_test_case/multiple_setup_and_teardown'
3
- require 'mocha/auto_verify'
4
- require 'shared/backtracefilter'
2
+ require 'mocha/standalone'
3
+ require 'mocha/test_case_adapter'
5
4
  require 'execution_point'
6
5
 
7
6
  class MochaTestResultIntegrationTest < Test::Unit::TestCase
8
-
7
+
9
8
  def test_should_include_expectation_verification_in_assertion_count
10
9
  test_result = run_test do
11
10
  object = mock()
@@ -94,8 +93,8 @@ class MochaTestResultIntegrationTest < Test::Unit::TestCase
94
93
 
95
94
  def run_test(test_result = Test::Unit::TestResult.new, &block)
96
95
  test_class = Class.new(Test::Unit::TestCase) do
97
- include MultipleSetupAndTeardown
98
- include Mocha::AutoVerify
96
+ include Mocha::Standalone
97
+ include Mocha::TestCaseAdapter
99
98
  define_method(:test_me, &block)
100
99
  end
101
100
  test = test_class.new(:test_me)
@@ -0,0 +1,110 @@
1
+ require 'test_helper'
2
+ require 'mocha_standalone'
3
+
4
+ class NotATestUnitAssertionFailedError < StandardError
5
+ end
6
+
7
+ class NotATestUnitTestCase
8
+
9
+ include Mocha::Standalone
10
+
11
+ attr_reader :assertion_count
12
+
13
+ def initialize
14
+ @assertion_count = 0
15
+ end
16
+
17
+ def run(test_method)
18
+ mocha_setup
19
+ begin
20
+ prepare
21
+ begin
22
+ send(test_method)
23
+ mocha_verify { @assertion_count += 1 }
24
+ rescue Mocha::ExpectationError => e
25
+ new_error = NotATestUnitAssertionFailedError.new(e.message)
26
+ new_error.set_backtrace(e.backtrace)
27
+ raise new_error
28
+ ensure
29
+ cleanup
30
+ end
31
+ ensure
32
+ mocha_teardown
33
+ end
34
+ end
35
+
36
+ def prepare
37
+ end
38
+
39
+ def cleanup
40
+ end
41
+
42
+ end
43
+
44
+ class SampleTest < NotATestUnitTestCase
45
+
46
+ def mocha_with_fulfilled_expectation
47
+ mockee = mock()
48
+ mockee.expects(:blah)
49
+ mockee.blah
50
+ end
51
+
52
+ def mocha_with_unfulfilled_expectation
53
+ mockee = mock()
54
+ mockee.expects(:blah)
55
+ end
56
+
57
+ def mocha_with_unexpected_invocation
58
+ mockee = mock()
59
+ mockee.blah
60
+ end
61
+
62
+ def stubba_with_fulfilled_expectation
63
+ stubbee = Class.new { define_method(:blah) {} }.new
64
+ stubbee.expects(:blah)
65
+ stubbee.blah
66
+ end
67
+
68
+ def stubba_with_unfulfilled_expectation
69
+ stubbee = Class.new { define_method(:blah) {} }.new
70
+ stubbee.expects(:blah)
71
+ end
72
+
73
+ end
74
+
75
+ require 'test/unit'
76
+
77
+ class StandaloneAcceptanceTest < Test::Unit::TestCase
78
+
79
+ attr_reader :sample_test
80
+
81
+ def setup
82
+ @sample_test = SampleTest.new
83
+ end
84
+
85
+ def test_should_pass_mocha_test
86
+ assert_nothing_raised { sample_test.run(:mocha_with_fulfilled_expectation) }
87
+ assert_equal 1, sample_test.assertion_count
88
+ end
89
+
90
+ def test_should_fail_mocha_test_due_to_unfulfilled_exception
91
+ assert_raises(NotATestUnitAssertionFailedError) { sample_test.run(:mocha_with_unfulfilled_expectation) }
92
+ assert_equal 1, sample_test.assertion_count
93
+ end
94
+
95
+ def test_should_fail_mocha_test_due_to_unexpected_invocation
96
+ assert_raises(NotATestUnitAssertionFailedError) { sample_test.run(:mocha_with_unexpected_invocation) }
97
+ assert_equal 0, sample_test.assertion_count
98
+ end
99
+
100
+ def test_should_pass_stubba_test
101
+ assert_nothing_raised { sample_test.run(:stubba_with_fulfilled_expectation) }
102
+ assert_equal 1, sample_test.assertion_count
103
+ end
104
+
105
+ def test_should_fail_stubba_test
106
+ assert_raises(NotATestUnitAssertionFailedError) { sample_test.run(:stubba_with_unfulfilled_expectation) }
107
+ assert_equal 1, sample_test.assertion_count
108
+ end
109
+
110
+ end