mocha 0.5.6 → 0.9.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.
- data/README +4 -4
- data/RELEASE +45 -0
- data/Rakefile +55 -33
- data/lib/mocha.rb +1 -0
- data/lib/mocha/any_instance_method.rb +24 -4
- data/lib/mocha/backtrace_filter.rb +17 -0
- data/lib/mocha/cardinality.rb +92 -0
- data/lib/mocha/central.rb +1 -9
- data/lib/mocha/change_state_side_effect.rb +19 -0
- data/lib/mocha/class_method.rb +25 -5
- data/lib/mocha/configuration.rb +60 -0
- data/lib/mocha/exception_raiser.rb +1 -1
- data/lib/mocha/expectation.rb +109 -48
- data/lib/mocha/expectation_error.rb +6 -6
- data/lib/mocha/expectation_list.rb +10 -14
- data/lib/mocha/in_state_ordering_constraint.rb +19 -0
- data/lib/mocha/instance_method.rb +9 -0
- data/lib/mocha/logger.rb +15 -0
- data/lib/mocha/mock.rb +19 -14
- data/lib/mocha/mockery.rb +166 -0
- data/lib/mocha/module_method.rb +17 -0
- data/lib/mocha/names.rb +53 -0
- data/lib/mocha/object.rb +26 -9
- data/lib/mocha/parameter_matchers.rb +2 -1
- data/lib/mocha/parameter_matchers/all_of.rb +3 -3
- data/lib/mocha/parameter_matchers/any_of.rb +3 -3
- data/lib/mocha/parameter_matchers/anything.rb +1 -1
- data/lib/mocha/parameter_matchers/has_entries.rb +4 -1
- data/lib/mocha/parameter_matchers/has_entry.rb +3 -2
- data/lib/mocha/parameter_matchers/has_key.rb +1 -1
- data/lib/mocha/parameter_matchers/has_value.rb +1 -1
- data/lib/mocha/parameter_matchers/not.rb +2 -2
- data/lib/mocha/parameter_matchers/object.rb +1 -1
- data/lib/mocha/parameter_matchers/optionally.rb +22 -0
- data/lib/mocha/parameter_matchers/regexp_matches.rb +2 -2
- data/lib/mocha/parameter_matchers/responds_with.rb +43 -0
- data/lib/mocha/parameter_matchers/yaml_equivalent.rb +43 -0
- data/lib/mocha/single_return_value.rb +2 -9
- data/lib/mocha/standalone.rb +151 -17
- data/lib/mocha/state_machine.rb +91 -0
- data/lib/mocha/stubbing_error.rb +16 -0
- data/lib/mocha/test_case_adapter.rb +76 -22
- data/lib/stubba.rb +2 -1
- data/test/acceptance/acceptance_test_helper.rb +38 -0
- data/test/acceptance/bug_18914_test.rb +43 -0
- data/test/acceptance/{expected_invocation_count_acceptance_test.rb → expected_invocation_count_test.rb} +29 -20
- data/test/acceptance/failure_messages_test.rb +64 -0
- data/test/acceptance/{mocha_acceptance_test.rb → mocha_example_test.rb} +5 -5
- data/test/{integration/mocha_test_result_integration_test.rb → acceptance/mocha_test_result_test.rb} +19 -40
- data/test/acceptance/mock_test.rb +100 -0
- data/test/acceptance/{mock_with_initializer_block_acceptance_test.rb → mock_with_initializer_block_test.rb} +12 -5
- data/test/acceptance/{mocked_methods_dispatch_acceptance_test.rb → mocked_methods_dispatch_test.rb} +12 -5
- data/test/acceptance/{optional_parameters_acceptance_test.rb → optional_parameters_test.rb} +11 -4
- data/test/acceptance/{parameter_matcher_acceptance_test.rb → parameter_matcher_test.rb} +67 -5
- data/test/acceptance/{partial_mocks_acceptance_test.rb → partial_mocks_test.rb} +12 -5
- data/test/acceptance/return_value_test.rb +52 -0
- data/test/acceptance/{sequence_acceptance_test.rb → sequence_test.rb} +13 -6
- data/test/acceptance/{standalone_acceptance_test.rb → standalone_test.rb} +19 -11
- data/test/acceptance/states_test.rb +70 -0
- data/test/acceptance/stub_any_instance_method_test.rb +195 -0
- data/test/acceptance/stub_class_method_test.rb +203 -0
- data/test/acceptance/stub_everything_test.rb +56 -0
- data/test/acceptance/stub_instance_method_test.rb +165 -0
- data/test/acceptance/stub_module_method_test.rb +163 -0
- data/test/acceptance/stub_test.rb +52 -0
- data/test/acceptance/{stubba_acceptance_test.rb → stubba_example_test.rb} +1 -1
- data/test/{integration/stubba_test_result_integration_test.rb → acceptance/stubba_test_result_test.rb} +17 -36
- data/test/acceptance/stubbing_error_backtrace_test.rb +64 -0
- data/test/acceptance/stubbing_method_unnecessarily_test.rb +65 -0
- data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +130 -0
- data/test/acceptance/stubbing_non_existent_class_method_test.rb +155 -0
- data/test/acceptance/stubbing_non_existent_instance_method_test.rb +145 -0
- data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +130 -0
- data/test/acceptance/stubbing_non_public_class_method_test.rb +161 -0
- data/test/acceptance/stubbing_non_public_instance_method_test.rb +141 -0
- data/test/acceptance/stubbing_on_non_mock_object_test.rb +64 -0
- data/test/execution_point.rb +3 -1
- data/test/simple_counter.rb +13 -0
- data/test/test_helper.rb +0 -1
- data/test/test_runner.rb +6 -4
- data/test/unit/any_instance_method_test.rb +1 -1
- data/test/unit/array_inspect_test.rb +1 -1
- data/test/unit/backtrace_filter_test.rb +19 -0
- data/test/unit/cardinality_test.rb +56 -0
- data/test/unit/central_test.rb +4 -63
- data/test/unit/change_state_side_effect_test.rb +41 -0
- data/test/unit/class_method_test.rb +38 -1
- data/test/unit/date_time_inspect_test.rb +1 -1
- data/test/unit/{expectation_raiser_test.rb → exception_raiser_test.rb} +14 -0
- data/test/unit/expectation_list_test.rb +4 -22
- data/test/unit/expectation_test.rb +70 -94
- data/test/unit/in_state_ordering_constraint_test.rb +43 -0
- data/test/unit/mock_test.rb +16 -37
- data/test/unit/mockery_test.rb +149 -0
- data/test/unit/{no_yield_test.rb → no_yields_test.rb} +0 -0
- data/test/unit/object_test.rb +6 -89
- data/test/unit/parameter_matchers/equals_test.rb +25 -0
- data/test/unit/parameter_matchers/has_entries_test.rb +22 -1
- data/test/unit/parameter_matchers/has_entry_test.rb +24 -2
- data/test/unit/parameter_matchers/has_key_test.rb +11 -0
- data/test/unit/parameter_matchers/has_value_test.rb +12 -0
- data/test/unit/parameter_matchers/regexp_matches_test.rb +1 -1
- data/test/unit/parameter_matchers/responds_with_test.rb +25 -0
- data/test/unit/parameter_matchers/stub_matcher.rb +4 -0
- data/test/unit/parameter_matchers/yaml_equivalent_test.rb +25 -0
- data/test/unit/single_return_value_test.rb +0 -19
- data/test/unit/state_machine_test.rb +98 -0
- metadata +108 -69
- data/lib/mocha/auto_verify.rb +0 -118
- data/lib/mocha/infinite_range.rb +0 -25
- data/lib/mocha/missing_expectation.rb +0 -17
- data/lib/mocha/setup_and_teardown.rb +0 -23
- data/lib/mocha/stub.rb +0 -18
- data/test/integration/stubba_integration_test.rb +0 -89
- data/test/unit/auto_verify_test.rb +0 -129
- data/test/unit/expectation_error_test.rb +0 -24
- data/test/unit/infinite_range_test.rb +0 -53
- data/test/unit/missing_expectation_test.rb +0 -42
- data/test/unit/setup_and_teardown_test.rb +0 -76
- data/test/unit/stub_test.rb +0 -24
@@ -0,0 +1,100 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class MockTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_acceptance_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
teardown_acceptance_test
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_should_build_mock_and_explicitly_add_an_expectation_which_is_satisfied
|
17
|
+
test_result = run_test do
|
18
|
+
foo = mock()
|
19
|
+
foo.expects(:bar)
|
20
|
+
foo.bar
|
21
|
+
end
|
22
|
+
assert_passed(test_result)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_should_build_mock_and_explicitly_add_an_expectation_which_is_not_satisfied
|
26
|
+
test_result = run_test do
|
27
|
+
foo = mock()
|
28
|
+
foo.expects(:bar)
|
29
|
+
end
|
30
|
+
assert_failed(test_result)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_should_build_named_mock_and_explicitly_add_an_expectation_which_is_satisfied
|
34
|
+
test_result = run_test do
|
35
|
+
foo = mock('foo')
|
36
|
+
foo.expects(:bar)
|
37
|
+
foo.bar
|
38
|
+
end
|
39
|
+
assert_passed(test_result)
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_should_build_named_mock_and_explicitly_add_an_expectation_which_is_not_satisfied
|
43
|
+
test_result = run_test do
|
44
|
+
foo = mock('foo')
|
45
|
+
foo.expects(:bar)
|
46
|
+
end
|
47
|
+
assert_failed(test_result)
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_should_build_mock_incorporating_two_expectations_which_are_satisifed
|
51
|
+
test_result = run_test do
|
52
|
+
foo = mock(:bar => 'bar', :baz => 'baz')
|
53
|
+
foo.bar
|
54
|
+
foo.baz
|
55
|
+
end
|
56
|
+
assert_passed(test_result)
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_should_build_mock_incorporating_two_expectations_the_first_of_which_is_not_satisifed
|
60
|
+
test_result = run_test do
|
61
|
+
foo = mock(:bar => 'bar', :baz => 'baz')
|
62
|
+
foo.baz
|
63
|
+
end
|
64
|
+
assert_failed(test_result)
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_should_build_mock_incorporating_two_expectations_the_second_of_which_is_not_satisifed
|
68
|
+
test_result = run_test do
|
69
|
+
foo = mock(:bar => 'bar', :baz => 'baz')
|
70
|
+
foo.bar
|
71
|
+
end
|
72
|
+
assert_failed(test_result)
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_should_build_named_mock_incorporating_two_expectations_which_are_satisifed
|
76
|
+
test_result = run_test do
|
77
|
+
foo = mock('foo', :bar => 'bar', :baz => 'baz')
|
78
|
+
foo.bar
|
79
|
+
foo.baz
|
80
|
+
end
|
81
|
+
assert_passed(test_result)
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_should_build_named_mock_incorporating_two_expectations_the_first_of_which_is_not_satisifed
|
85
|
+
test_result = run_test do
|
86
|
+
foo = mock('foo', :bar => 'bar', :baz => 'baz')
|
87
|
+
foo.baz
|
88
|
+
end
|
89
|
+
assert_failed(test_result)
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_should_build_named_mock_incorporating_two_expectations_the_second_of_which_is_not_satisifed
|
93
|
+
test_result = run_test do
|
94
|
+
foo = mock('foo', :bar => 'bar', :baz => 'baz')
|
95
|
+
foo.bar
|
96
|
+
end
|
97
|
+
assert_failed(test_result)
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
@@ -1,11 +1,18 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
2
|
require 'mocha'
|
3
|
-
require 'test_runner'
|
4
3
|
|
5
|
-
class
|
4
|
+
class MockWithInitializerBlockTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_acceptance_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
teardown_acceptance_test
|
14
|
+
end
|
6
15
|
|
7
|
-
include TestRunner
|
8
|
-
|
9
16
|
def test_should_expect_two_method_invocations_and_receive_both_of_them
|
10
17
|
test_result = run_test do
|
11
18
|
mock = mock() do
|
data/test/acceptance/{mocked_methods_dispatch_acceptance_test.rb → mocked_methods_dispatch_test.rb}
RENAMED
@@ -1,11 +1,18 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
2
|
require 'mocha'
|
3
|
-
require 'test_runner'
|
4
3
|
|
5
|
-
class
|
6
|
-
|
7
|
-
include TestRunner
|
4
|
+
class MockedMethodDispatchTest < Test::Unit::TestCase
|
8
5
|
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_acceptance_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
teardown_acceptance_test
|
14
|
+
end
|
15
|
+
|
9
16
|
def test_should_find_latest_matching_expectation
|
10
17
|
test_result = run_test do
|
11
18
|
mock = mock()
|
@@ -1,10 +1,17 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
2
|
require 'mocha'
|
3
|
-
require 'test_runner'
|
4
3
|
|
5
|
-
class
|
4
|
+
class OptionalParameterMatcherTest < Test::Unit::TestCase
|
6
5
|
|
7
|
-
include
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_acceptance_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
teardown_acceptance_test
|
14
|
+
end
|
8
15
|
|
9
16
|
def test_should_pass_if_all_required_parameters_match_and_no_optional_parameters_are_supplied
|
10
17
|
test_result = run_test do
|
@@ -1,11 +1,18 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
2
|
require 'mocha'
|
3
|
-
require 'test_runner'
|
4
3
|
|
5
|
-
class
|
4
|
+
class ParameterMatcherTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_acceptance_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
teardown_acceptance_test
|
14
|
+
end
|
6
15
|
|
7
|
-
include TestRunner
|
8
|
-
|
9
16
|
def test_should_match_hash_parameter_with_specified_key
|
10
17
|
test_result = run_test do
|
11
18
|
mock = mock()
|
@@ -114,4 +121,59 @@ class ParameterMatcherAcceptanceTest < Test::Unit::TestCase
|
|
114
121
|
assert_failed(test_result)
|
115
122
|
end
|
116
123
|
|
124
|
+
def test_should_match_hash_parameter_with_specified_entries_using_nested_matchers
|
125
|
+
test_result = run_test do
|
126
|
+
mock = mock()
|
127
|
+
mock.expects(:method).with(has_entries(:key_1 => regexp_matches(/value_1/), kind_of(Symbol) => 'value_2'))
|
128
|
+
mock.method(:key_1 => 'value_1', :key_2 => 'value_2', :key_3 => 'value_3')
|
129
|
+
end
|
130
|
+
assert_passed(test_result)
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_should_not_match_hash_parameter_with_specified_entries_using_nested_matchers
|
134
|
+
test_result = run_test do
|
135
|
+
mock = mock()
|
136
|
+
mock.expects(:method).with(has_entries(:key_1 => regexp_matches(/value_1/), kind_of(String) => 'value_2'))
|
137
|
+
mock.method(:key_1 => 'value_2', :key_2 => 'value_3')
|
138
|
+
end
|
139
|
+
assert_failed(test_result)
|
140
|
+
end
|
141
|
+
|
142
|
+
def test_should_match_parameter_that_matches_any_value
|
143
|
+
test_result = run_test do
|
144
|
+
mock = mock()
|
145
|
+
mock.expects(:method).with(any_of('value_1', 'value_2')).times(2)
|
146
|
+
mock.method('value_1')
|
147
|
+
mock.method('value_2')
|
148
|
+
end
|
149
|
+
assert_passed(test_result)
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_should_not_match_parameter_that_does_not_match_any_value
|
153
|
+
test_result = run_test do
|
154
|
+
mock = mock()
|
155
|
+
mock.expects(:method).with(any_of('value_1', 'value_2'))
|
156
|
+
mock.method('value_3')
|
157
|
+
end
|
158
|
+
assert_failed(test_result)
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_should_match_parameter_that_matches_all_values
|
162
|
+
test_result = run_test do
|
163
|
+
mock = mock()
|
164
|
+
mock.expects(:method).with(all_of('value_1', 'value_1'))
|
165
|
+
mock.method('value_1')
|
166
|
+
end
|
167
|
+
assert_passed(test_result)
|
168
|
+
end
|
169
|
+
|
170
|
+
def test_should_not_match_parameter_that_does_not_match_all_values
|
171
|
+
test_result = run_test do
|
172
|
+
mock = mock()
|
173
|
+
mock.expects(:method).with(all_of('value_1', 'value_2'))
|
174
|
+
mock.method('value_1')
|
175
|
+
end
|
176
|
+
assert_failed(test_result)
|
177
|
+
end
|
178
|
+
|
117
179
|
end
|
@@ -1,11 +1,18 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
2
|
require 'mocha'
|
3
|
-
require 'test_runner'
|
4
3
|
|
5
|
-
class
|
4
|
+
class PartialMockTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_acceptance_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
teardown_acceptance_test
|
14
|
+
end
|
6
15
|
|
7
|
-
include TestRunner
|
8
|
-
|
9
16
|
def test_should_pass_if_all_expectations_are_satisfied
|
10
17
|
test_result = run_test do
|
11
18
|
partial_mock_one = "partial_mock_one"
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class ReturnValueTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_acceptance_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
teardown_acceptance_test
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_should_build_mock_and_explicitly_add_an_expectation_with_a_return_value
|
17
|
+
test_result = run_test do
|
18
|
+
foo = mock('foo')
|
19
|
+
foo.expects(:bar).returns('bar')
|
20
|
+
assert_equal 'bar', foo.bar
|
21
|
+
end
|
22
|
+
assert_passed(test_result)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_should_build_mock_incorporating_two_expectations_with_return_values
|
26
|
+
test_result = run_test do
|
27
|
+
foo = mock('foo', :bar => 'bar', :baz => 'baz')
|
28
|
+
assert_equal 'bar', foo.bar
|
29
|
+
assert_equal 'baz', foo.baz
|
30
|
+
end
|
31
|
+
assert_passed(test_result)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_should_build_stub_and_explicitly_add_an_expectation_with_a_return_value
|
35
|
+
test_result = run_test do
|
36
|
+
foo = stub('foo')
|
37
|
+
foo.stubs(:bar).returns('bar')
|
38
|
+
assert_equal 'bar', foo.bar
|
39
|
+
end
|
40
|
+
assert_passed(test_result)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_should_build_stub_incorporating_two_expectations_with_return_values
|
44
|
+
test_result = run_test do
|
45
|
+
foo = stub('foo', :bar => 'bar', :baz => 'baz')
|
46
|
+
assert_equal 'bar', foo.bar
|
47
|
+
assert_equal 'baz', foo.baz
|
48
|
+
end
|
49
|
+
assert_passed(test_result)
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
@@ -1,11 +1,18 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
2
|
require 'mocha'
|
3
|
-
require 'test_runner'
|
4
3
|
|
5
|
-
class
|
4
|
+
class SequenceTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_acceptance_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
teardown_acceptance_test
|
14
|
+
end
|
6
15
|
|
7
|
-
include TestRunner
|
8
|
-
|
9
16
|
def test_should_constrain_invocations_to_occur_in_expected_order
|
10
17
|
test_result = run_test do
|
11
18
|
mock = mock()
|
@@ -97,7 +104,7 @@ class SequenceAcceptanceTest < Test::Unit::TestCase
|
|
97
104
|
sequence = sequence('one')
|
98
105
|
|
99
106
|
mock.expects(:first).in_sequence(sequence)
|
100
|
-
|
107
|
+
mock.stubs(:second).in_sequence(sequence)
|
101
108
|
mock.expects(:third).in_sequence(sequence)
|
102
109
|
|
103
110
|
mock.first
|
@@ -1,5 +1,6 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
2
|
require 'mocha_standalone'
|
3
|
+
require 'simple_counter'
|
3
4
|
|
4
5
|
class NotATestUnitAssertionFailedError < StandardError
|
5
6
|
end
|
@@ -8,10 +9,10 @@ class NotATestUnitTestCase
|
|
8
9
|
|
9
10
|
include Mocha::Standalone
|
10
11
|
|
11
|
-
attr_reader :
|
12
|
+
attr_reader :assertion_counter
|
12
13
|
|
13
14
|
def initialize
|
14
|
-
@
|
15
|
+
@assertion_counter = SimpleCounter.new
|
15
16
|
end
|
16
17
|
|
17
18
|
def run(test_method)
|
@@ -20,7 +21,7 @@ class NotATestUnitTestCase
|
|
20
21
|
prepare
|
21
22
|
begin
|
22
23
|
send(test_method)
|
23
|
-
mocha_verify
|
24
|
+
mocha_verify(@assertion_counter)
|
24
25
|
rescue Mocha::ExpectationError => e
|
25
26
|
new_error = NotATestUnitAssertionFailedError.new(e.message)
|
26
27
|
new_error.set_backtrace(e.backtrace)
|
@@ -86,42 +87,49 @@ end
|
|
86
87
|
|
87
88
|
require 'test/unit'
|
88
89
|
|
89
|
-
class
|
90
|
+
class StandaloneTest < Test::Unit::TestCase
|
90
91
|
|
91
92
|
attr_reader :sample_test
|
92
93
|
|
94
|
+
include AcceptanceTest
|
95
|
+
|
93
96
|
def setup
|
94
97
|
@sample_test = SampleTest.new
|
98
|
+
setup_acceptance_test
|
99
|
+
end
|
100
|
+
|
101
|
+
def teardown
|
102
|
+
teardown_acceptance_test
|
95
103
|
end
|
96
104
|
|
97
105
|
def test_should_pass_mocha_test
|
98
106
|
assert_nothing_raised { sample_test.run(:mocha_with_fulfilled_expectation) }
|
99
|
-
assert_equal 1, sample_test.
|
107
|
+
assert_equal 1, sample_test.assertion_counter.count
|
100
108
|
end
|
101
109
|
|
102
110
|
def test_should_fail_mocha_test_due_to_unfulfilled_exception
|
103
111
|
assert_raises(NotATestUnitAssertionFailedError) { sample_test.run(:mocha_with_unfulfilled_expectation) }
|
104
|
-
assert_equal 1, sample_test.
|
112
|
+
assert_equal 1, sample_test.assertion_counter.count
|
105
113
|
end
|
106
114
|
|
107
115
|
def test_should_fail_mocha_test_due_to_unexpected_invocation
|
108
116
|
assert_raises(NotATestUnitAssertionFailedError) { sample_test.run(:mocha_with_unexpected_invocation) }
|
109
|
-
assert_equal 0, sample_test.
|
117
|
+
assert_equal 0, sample_test.assertion_counter.count
|
110
118
|
end
|
111
119
|
|
112
120
|
def test_should_pass_stubba_test
|
113
121
|
assert_nothing_raised { sample_test.run(:stubba_with_fulfilled_expectation) }
|
114
|
-
assert_equal 1, sample_test.
|
122
|
+
assert_equal 1, sample_test.assertion_counter.count
|
115
123
|
end
|
116
124
|
|
117
125
|
def test_should_fail_stubba_test
|
118
126
|
assert_raises(NotATestUnitAssertionFailedError) { sample_test.run(:stubba_with_unfulfilled_expectation) }
|
119
|
-
assert_equal 1, sample_test.
|
127
|
+
assert_equal 1, sample_test.assertion_counter.count
|
120
128
|
end
|
121
129
|
|
122
130
|
def test_should_pass_mocha_test_with_matching_parameter
|
123
131
|
assert_nothing_raised { sample_test.run(:mocha_with_matching_parameter) }
|
124
|
-
assert_equal 1, sample_test.
|
132
|
+
assert_equal 1, sample_test.assertion_counter.count
|
125
133
|
end
|
126
134
|
|
127
135
|
def test_should_fail_mocha_test_with_non_matching_parameter
|