mocha-macruby 0.9.8.20100129120100
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/COPYING +3 -0
- data/MIT-LICENSE +7 -0
- data/README +39 -0
- data/RELEASE +294 -0
- data/Rakefile +214 -0
- data/examples/misc.rb +43 -0
- data/examples/mocha.rb +25 -0
- data/examples/stubba.rb +64 -0
- data/lib/mocha.rb +3 -0
- data/lib/mocha/any_instance_method.rb +59 -0
- data/lib/mocha/api.rb +173 -0
- data/lib/mocha/argument_iterator.rb +21 -0
- data/lib/mocha/backtrace_filter.rb +17 -0
- data/lib/mocha/cardinality.rb +95 -0
- data/lib/mocha/central.rb +27 -0
- data/lib/mocha/change_state_side_effect.rb +19 -0
- data/lib/mocha/class_method.rb +117 -0
- data/lib/mocha/configuration.rb +79 -0
- data/lib/mocha/deprecation.rb +22 -0
- data/lib/mocha/exception_raiser.rb +17 -0
- data/lib/mocha/expectation.rb +476 -0
- data/lib/mocha/expectation_error.rb +15 -0
- data/lib/mocha/expectation_list.rb +50 -0
- data/lib/mocha/in_state_ordering_constraint.rb +19 -0
- data/lib/mocha/inspect.rb +67 -0
- data/lib/mocha/instance_method.rb +16 -0
- data/lib/mocha/integration.rb +38 -0
- data/lib/mocha/integration/mini_test.rb +21 -0
- data/lib/mocha/integration/mini_test/assertion_counter.rb +23 -0
- data/lib/mocha/integration/mini_test/version_131_and_above.rb +50 -0
- data/lib/mocha/integration/test_unit.rb +40 -0
- data/lib/mocha/integration/test_unit/assertion_counter.rb +23 -0
- data/lib/mocha/integration/test_unit/gem_version_200.rb +49 -0
- data/lib/mocha/integration/test_unit/gem_version_201_and_above.rb +49 -0
- data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +48 -0
- data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +50 -0
- data/lib/mocha/is_a.rb +9 -0
- data/lib/mocha/logger.rb +15 -0
- data/lib/mocha/metaclass.rb +13 -0
- data/lib/mocha/method_matcher.rb +21 -0
- data/lib/mocha/mock.rb +200 -0
- data/lib/mocha/mockery.rb +181 -0
- data/lib/mocha/module_method.rb +16 -0
- data/lib/mocha/multiple_yields.rb +20 -0
- data/lib/mocha/names.rb +53 -0
- data/lib/mocha/no_yields.rb +11 -0
- data/lib/mocha/object.rb +187 -0
- data/lib/mocha/parameter_matchers.rb +27 -0
- data/lib/mocha/parameter_matchers/all_of.rb +42 -0
- data/lib/mocha/parameter_matchers/any_of.rb +47 -0
- data/lib/mocha/parameter_matchers/any_parameters.rb +40 -0
- data/lib/mocha/parameter_matchers/anything.rb +33 -0
- data/lib/mocha/parameter_matchers/base.rb +15 -0
- data/lib/mocha/parameter_matchers/equals.rb +42 -0
- data/lib/mocha/parameter_matchers/has_entries.rb +45 -0
- data/lib/mocha/parameter_matchers/has_entry.rb +57 -0
- data/lib/mocha/parameter_matchers/has_key.rb +43 -0
- data/lib/mocha/parameter_matchers/has_value.rb +43 -0
- data/lib/mocha/parameter_matchers/includes.rb +41 -0
- data/lib/mocha/parameter_matchers/instance_of.rb +42 -0
- data/lib/mocha/parameter_matchers/is_a.rb +42 -0
- data/lib/mocha/parameter_matchers/kind_of.rb +42 -0
- data/lib/mocha/parameter_matchers/not.rb +42 -0
- data/lib/mocha/parameter_matchers/object.rb +15 -0
- data/lib/mocha/parameter_matchers/optionally.rb +55 -0
- data/lib/mocha/parameter_matchers/regexp_matches.rb +44 -0
- data/lib/mocha/parameter_matchers/responds_with.rb +43 -0
- data/lib/mocha/parameter_matchers/yaml_equivalent.rb +43 -0
- data/lib/mocha/parameters_matcher.rb +37 -0
- data/lib/mocha/pretty_parameters.rb +28 -0
- data/lib/mocha/return_values.rb +31 -0
- data/lib/mocha/sequence.rb +42 -0
- data/lib/mocha/single_return_value.rb +17 -0
- data/lib/mocha/single_yield.rb +18 -0
- data/lib/mocha/standalone.rb +1 -0
- data/lib/mocha/state_machine.rb +91 -0
- data/lib/mocha/stubbing_error.rb +16 -0
- data/lib/mocha/unexpected_invocation.rb +18 -0
- data/lib/mocha/yield_parameters.rb +31 -0
- data/lib/mocha_standalone.rb +2 -0
- data/lib/stubba.rb +4 -0
- data/test/acceptance/acceptance_test_helper.rb +38 -0
- data/test/acceptance/api_test.rb +139 -0
- data/test/acceptance/bug_18914_test.rb +43 -0
- data/test/acceptance/bug_21465_test.rb +34 -0
- data/test/acceptance/bug_21563_test.rb +25 -0
- data/test/acceptance/expected_invocation_count_test.rb +196 -0
- data/test/acceptance/failure_messages_test.rb +64 -0
- data/test/acceptance/minitest_test.rb +153 -0
- data/test/acceptance/mocha_example_test.rb +98 -0
- data/test/acceptance/mocha_test_result_test.rb +84 -0
- data/test/acceptance/mock_test.rb +100 -0
- data/test/acceptance/mock_with_initializer_block_test.rb +51 -0
- data/test/acceptance/mocked_methods_dispatch_test.rb +78 -0
- data/test/acceptance/optional_parameters_test.rb +70 -0
- data/test/acceptance/parameter_matcher_test.rb +209 -0
- data/test/acceptance/partial_mocks_test.rb +47 -0
- data/test/acceptance/return_value_test.rb +52 -0
- data/test/acceptance/sequence_test.rb +186 -0
- 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 +203 -0
- data/test/acceptance/stub_module_method_test.rb +163 -0
- data/test/acceptance/stub_test.rb +52 -0
- data/test/acceptance/stubba_example_test.rb +102 -0
- data/test/acceptance/stubba_test.rb +15 -0
- data/test/acceptance/stubba_test_result_test.rb +66 -0
- 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 +157 -0
- data/test/acceptance/stubbing_non_existent_instance_method_test.rb +147 -0
- data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +130 -0
- data/test/acceptance/stubbing_non_public_class_method_test.rb +163 -0
- data/test/acceptance/stubbing_non_public_instance_method_test.rb +143 -0
- data/test/acceptance/stubbing_on_non_mock_object_test.rb +64 -0
- data/test/deprecation_disabler.rb +15 -0
- data/test/execution_point.rb +36 -0
- data/test/method_definer.rb +24 -0
- data/test/simple_counter.rb +13 -0
- data/test/test_helper.rb +25 -0
- data/test/test_runner.rb +33 -0
- data/test/unit/any_instance_method_test.rb +126 -0
- data/test/unit/array_inspect_test.rb +16 -0
- data/test/unit/backtrace_filter_test.rb +19 -0
- data/test/unit/cardinality_test.rb +56 -0
- data/test/unit/central_test.rb +65 -0
- data/test/unit/change_state_side_effect_test.rb +41 -0
- data/test/unit/class_method_test.rb +295 -0
- data/test/unit/configuration_test.rb +38 -0
- data/test/unit/date_time_inspect_test.rb +21 -0
- data/test/unit/exception_raiser_test.rb +42 -0
- data/test/unit/expectation_list_test.rb +57 -0
- data/test/unit/expectation_test.rb +480 -0
- data/test/unit/hash_inspect_test.rb +16 -0
- data/test/unit/in_state_ordering_constraint_test.rb +43 -0
- data/test/unit/metaclass_test.rb +22 -0
- data/test/unit/method_matcher_test.rb +23 -0
- data/test/unit/mock_test.rb +302 -0
- data/test/unit/mockery_test.rb +149 -0
- data/test/unit/multiple_yields_test.rb +18 -0
- data/test/unit/no_yields_test.rb +18 -0
- data/test/unit/object_inspect_test.rb +37 -0
- data/test/unit/object_test.rb +82 -0
- data/test/unit/parameter_matchers/all_of_test.rb +26 -0
- data/test/unit/parameter_matchers/any_of_test.rb +26 -0
- data/test/unit/parameter_matchers/anything_test.rb +21 -0
- data/test/unit/parameter_matchers/equals_test.rb +25 -0
- data/test/unit/parameter_matchers/has_entries_test.rb +51 -0
- data/test/unit/parameter_matchers/has_entry_test.rb +82 -0
- data/test/unit/parameter_matchers/has_key_test.rb +55 -0
- data/test/unit/parameter_matchers/has_value_test.rb +57 -0
- data/test/unit/parameter_matchers/includes_test.rb +44 -0
- data/test/unit/parameter_matchers/instance_of_test.rb +25 -0
- data/test/unit/parameter_matchers/is_a_test.rb +25 -0
- data/test/unit/parameter_matchers/kind_of_test.rb +25 -0
- data/test/unit/parameter_matchers/not_test.rb +26 -0
- data/test/unit/parameter_matchers/regexp_matches_test.rb +46 -0
- data/test/unit/parameter_matchers/responds_with_test.rb +25 -0
- data/test/unit/parameter_matchers/stub_matcher.rb +27 -0
- data/test/unit/parameter_matchers/yaml_equivalent_test.rb +25 -0
- data/test/unit/parameters_matcher_test.rb +121 -0
- data/test/unit/return_values_test.rb +63 -0
- data/test/unit/sequence_test.rb +104 -0
- data/test/unit/single_return_value_test.rb +14 -0
- data/test/unit/single_yield_test.rb +18 -0
- data/test/unit/state_machine_test.rb +98 -0
- data/test/unit/string_inspect_test.rb +11 -0
- data/test/unit/yield_parameters_test.rb +93 -0
- metadata +240 -0
@@ -0,0 +1,51 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
|
+
require 'mocha'
|
3
|
+
|
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
|
15
|
+
|
16
|
+
def test_should_expect_two_method_invocations_and_receive_both_of_them
|
17
|
+
test_result = run_as_test do
|
18
|
+
mock = mock() do
|
19
|
+
expects(:method_1)
|
20
|
+
expects(:method_2)
|
21
|
+
end
|
22
|
+
mock.method_1
|
23
|
+
mock.method_2
|
24
|
+
end
|
25
|
+
assert_passed(test_result)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_should_expect_two_method_invocations_but_receive_only_one_of_them
|
29
|
+
test_result = run_as_test do
|
30
|
+
mock = mock() do
|
31
|
+
expects(:method_1)
|
32
|
+
expects(:method_2)
|
33
|
+
end
|
34
|
+
mock.method_1
|
35
|
+
end
|
36
|
+
assert_failed(test_result)
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_should_stub_methods
|
40
|
+
test_result = run_as_test do
|
41
|
+
mock = mock() do
|
42
|
+
stubs(:method_1).returns(1)
|
43
|
+
stubs(:method_2).returns(2)
|
44
|
+
end
|
45
|
+
assert_equal 1, mock.method_1
|
46
|
+
assert_equal 2, mock.method_2
|
47
|
+
end
|
48
|
+
assert_passed(test_result)
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class MockedMethodDispatchTest < 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_find_latest_matching_expectation
|
17
|
+
test_result = run_as_test do
|
18
|
+
mock = mock()
|
19
|
+
mock.stubs(:method).returns(1)
|
20
|
+
mock.stubs(:method).returns(2)
|
21
|
+
assert_equal 2, mock.method
|
22
|
+
assert_equal 2, mock.method
|
23
|
+
assert_equal 2, mock.method
|
24
|
+
end
|
25
|
+
assert_passed(test_result)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_should_find_latest_expectation_which_has_not_stopped_matching
|
29
|
+
test_result = run_as_test do
|
30
|
+
mock = mock()
|
31
|
+
mock.stubs(:method).returns(1)
|
32
|
+
mock.stubs(:method).once.returns(2)
|
33
|
+
assert_equal 2, mock.method
|
34
|
+
assert_equal 1, mock.method
|
35
|
+
assert_equal 1, mock.method
|
36
|
+
end
|
37
|
+
assert_passed(test_result)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_should_keep_finding_later_stub_and_so_never_satisfy_earlier_expectation
|
41
|
+
test_result = run_as_test do
|
42
|
+
mock = mock()
|
43
|
+
mock.expects(:method).returns(1)
|
44
|
+
mock.stubs(:method).returns(2)
|
45
|
+
assert_equal 2, mock.method
|
46
|
+
assert_equal 2, mock.method
|
47
|
+
assert_equal 2, mock.method
|
48
|
+
end
|
49
|
+
assert_failed(test_result)
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_should_find_later_expectation_until_it_stops_matching_then_find_earlier_stub
|
53
|
+
test_result = run_as_test do
|
54
|
+
mock = mock()
|
55
|
+
mock.stubs(:method).returns(1)
|
56
|
+
mock.expects(:method).returns(2)
|
57
|
+
assert_equal 2, mock.method
|
58
|
+
assert_equal 1, mock.method
|
59
|
+
assert_equal 1, mock.method
|
60
|
+
end
|
61
|
+
assert_passed(test_result)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_should_find_latest_expectation_with_range_of_expected_invocation_count_which_has_not_stopped_matching
|
65
|
+
test_result = run_as_test do
|
66
|
+
mock = mock()
|
67
|
+
mock.stubs(:method).returns(1)
|
68
|
+
mock.stubs(:method).times(2..3).returns(2)
|
69
|
+
assert_equal 2, mock.method
|
70
|
+
assert_equal 2, mock.method
|
71
|
+
assert_equal 2, mock.method
|
72
|
+
assert_equal 1, mock.method
|
73
|
+
assert_equal 1, mock.method
|
74
|
+
end
|
75
|
+
assert_passed(test_result)
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class OptionalParameterMatcherTest < 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_pass_if_all_required_parameters_match_and_no_optional_parameters_are_supplied
|
17
|
+
test_result = run_as_test do
|
18
|
+
mock = mock()
|
19
|
+
mock.expects(:method).with(1, 2, optionally(3, 4))
|
20
|
+
mock.method(1, 2)
|
21
|
+
end
|
22
|
+
assert_passed(test_result)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_should_pass_if_all_required_and_optional_parameters_match_and_some_optional_parameters_are_supplied
|
26
|
+
test_result = run_as_test do
|
27
|
+
mock = mock()
|
28
|
+
mock.expects(:method).with(1, 2, optionally(3, 4))
|
29
|
+
mock.method(1, 2, 3)
|
30
|
+
end
|
31
|
+
assert_passed(test_result)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_should_pass_if_all_required_and_optional_parameters_match_and_all_optional_parameters_are_supplied
|
35
|
+
test_result = run_as_test do
|
36
|
+
mock = mock()
|
37
|
+
mock.expects(:method).with(1, 2, optionally(3, 4))
|
38
|
+
mock.method(1, 2, 3, 4)
|
39
|
+
end
|
40
|
+
assert_passed(test_result)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_should_fail_if_all_required_and_optional_parameters_match_but_too_many_optional_parameters_are_supplied
|
44
|
+
test_result = run_as_test do
|
45
|
+
mock = mock()
|
46
|
+
mock.expects(:method).with(1, 2, optionally(3, 4))
|
47
|
+
mock.method(1, 2, 3, 4, 5)
|
48
|
+
end
|
49
|
+
assert_failed(test_result)
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_should_fail_if_all_required_parameters_match_but_some_optional_parameters_do_not_match
|
53
|
+
test_result = run_as_test do
|
54
|
+
mock = mock()
|
55
|
+
mock.expects(:method).with(1, 2, optionally(3, 4))
|
56
|
+
mock.method(1, 2, 4)
|
57
|
+
end
|
58
|
+
assert_failed(test_result)
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_should_fail_if_all_required_parameters_match_but_no_optional_parameters_match
|
62
|
+
test_result = run_as_test do
|
63
|
+
mock = mock()
|
64
|
+
mock.expects(:method).with(1, 2, optionally(3, 4))
|
65
|
+
mock.method(1, 2, 4, 5)
|
66
|
+
end
|
67
|
+
assert_failed(test_result)
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
@@ -0,0 +1,209 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
|
+
require 'mocha'
|
3
|
+
|
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
|
15
|
+
|
16
|
+
def test_should_match_hash_parameter_with_specified_key
|
17
|
+
test_result = run_as_test do
|
18
|
+
mock = mock()
|
19
|
+
mock.expects(:method).with(has_key(:key_1))
|
20
|
+
mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
|
21
|
+
end
|
22
|
+
assert_passed(test_result)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_should_not_match_hash_parameter_with_specified_key
|
26
|
+
test_result = run_as_test do
|
27
|
+
mock = mock()
|
28
|
+
mock.expects(:method).with(has_key(:key_1))
|
29
|
+
mock.method(:key_2 => 'value_2')
|
30
|
+
end
|
31
|
+
assert_failed(test_result)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_should_match_hash_parameter_with_specified_value
|
35
|
+
test_result = run_as_test do
|
36
|
+
mock = mock()
|
37
|
+
mock.expects(:method).with(has_value('value_1'))
|
38
|
+
mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
|
39
|
+
end
|
40
|
+
assert_passed(test_result)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_should_not_match_hash_parameter_with_specified_value
|
44
|
+
test_result = run_as_test do
|
45
|
+
mock = mock()
|
46
|
+
mock.expects(:method).with(has_value('value_1'))
|
47
|
+
mock.method(:key_2 => 'value_2')
|
48
|
+
end
|
49
|
+
assert_failed(test_result)
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_should_match_hash_parameter_with_specified_key_value_pair
|
53
|
+
test_result = run_as_test do
|
54
|
+
mock = mock()
|
55
|
+
mock.expects(:method).with(has_entry(:key_1, 'value_1'))
|
56
|
+
mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
|
57
|
+
end
|
58
|
+
assert_passed(test_result)
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_should_not_match_hash_parameter_with_specified_key_value_pair
|
62
|
+
test_result = run_as_test do
|
63
|
+
mock = mock()
|
64
|
+
mock.expects(:method).with(has_entry(:key_1, 'value_2'))
|
65
|
+
mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
|
66
|
+
end
|
67
|
+
assert_failed(test_result)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_should_match_hash_parameter_with_specified_hash_entry
|
71
|
+
test_result = run_as_test do
|
72
|
+
mock = mock()
|
73
|
+
mock.expects(:method).with(has_entry(:key_1 => 'value_1'))
|
74
|
+
mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
|
75
|
+
end
|
76
|
+
assert_passed(test_result)
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_should_not_match_hash_parameter_with_specified_hash_entry
|
80
|
+
test_result = run_as_test do
|
81
|
+
mock = mock()
|
82
|
+
mock.expects(:method).with(has_entry(:key_1 => 'value_2'))
|
83
|
+
mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
|
84
|
+
end
|
85
|
+
assert_failed(test_result)
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_should_match_hash_parameter_with_specified_entries
|
89
|
+
test_result = run_as_test do
|
90
|
+
mock = mock()
|
91
|
+
mock.expects(:method).with(has_entries(:key_1 => 'value_1', :key_2 => 'value_2'))
|
92
|
+
mock.method(:key_1 => 'value_1', :key_2 => 'value_2', :key_3 => 'value_3')
|
93
|
+
end
|
94
|
+
assert_passed(test_result)
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_should_not_match_hash_parameter_with_specified_entries
|
98
|
+
test_result = run_as_test do
|
99
|
+
mock = mock()
|
100
|
+
mock.expects(:method).with(has_entries(:key_1 => 'value_1', :key_2 => 'value_2'))
|
101
|
+
mock.method(:key_1 => 'value_1', :key_2 => 'value_3')
|
102
|
+
end
|
103
|
+
assert_failed(test_result)
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_should_match_parameter_that_matches_regular_expression
|
107
|
+
test_result = run_as_test do
|
108
|
+
mock = mock()
|
109
|
+
mock.expects(:method).with(regexp_matches(/meter/))
|
110
|
+
mock.method('this parameter should match')
|
111
|
+
end
|
112
|
+
assert_passed(test_result)
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_should_not_match_parameter_that_does_not_match_regular_expression
|
116
|
+
test_result = run_as_test do
|
117
|
+
mock = mock()
|
118
|
+
mock.expects(:method).with(regexp_matches(/something different/))
|
119
|
+
mock.method('this parameter should not match')
|
120
|
+
end
|
121
|
+
assert_failed(test_result)
|
122
|
+
end
|
123
|
+
|
124
|
+
def test_should_match_hash_parameter_with_specified_entries_using_nested_matchers
|
125
|
+
test_result = run_as_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_as_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_as_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_as_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_as_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_as_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
|
+
|
179
|
+
def test_should_match_parameter_that_responds_with_specified_value
|
180
|
+
klass = Class.new do
|
181
|
+
def quack
|
182
|
+
'quack'
|
183
|
+
end
|
184
|
+
end
|
185
|
+
duck = klass.new
|
186
|
+
test_result = run_as_test do
|
187
|
+
mock = mock()
|
188
|
+
mock.expects(:method).with(responds_with(:quack, 'quack'))
|
189
|
+
mock.method(duck)
|
190
|
+
end
|
191
|
+
assert_passed(test_result)
|
192
|
+
end
|
193
|
+
|
194
|
+
def test_should_not_match_parameter_that_does_not_respond_with_specified_value
|
195
|
+
klass = Class.new do
|
196
|
+
def quack
|
197
|
+
'woof'
|
198
|
+
end
|
199
|
+
end
|
200
|
+
duck = klass.new
|
201
|
+
test_result = run_as_test do
|
202
|
+
mock = mock()
|
203
|
+
mock.expects(:method).with(responds_with(:quack, 'quack'))
|
204
|
+
mock.method(duck)
|
205
|
+
end
|
206
|
+
assert_failed(test_result)
|
207
|
+
end
|
208
|
+
|
209
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
|
+
require 'mocha'
|
3
|
+
|
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
|
15
|
+
|
16
|
+
def test_should_pass_if_all_expectations_are_satisfied
|
17
|
+
test_result = run_as_test do
|
18
|
+
partial_mock_one = "partial_mock_one"
|
19
|
+
partial_mock_two = "partial_mock_two"
|
20
|
+
|
21
|
+
partial_mock_one.expects(:first)
|
22
|
+
partial_mock_one.expects(:second)
|
23
|
+
partial_mock_two.expects(:third)
|
24
|
+
|
25
|
+
partial_mock_one.first
|
26
|
+
partial_mock_one.second
|
27
|
+
partial_mock_two.third
|
28
|
+
end
|
29
|
+
assert_passed(test_result)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_should_fail_if_all_expectations_are_not_satisfied
|
33
|
+
test_result = run_as_test do
|
34
|
+
partial_mock_one = "partial_mock_one"
|
35
|
+
partial_mock_two = "partial_mock_two"
|
36
|
+
|
37
|
+
partial_mock_one.expects(:first)
|
38
|
+
partial_mock_one.expects(:second)
|
39
|
+
partial_mock_two.expects(:third)
|
40
|
+
|
41
|
+
partial_mock_one.first
|
42
|
+
partial_mock_two.third
|
43
|
+
end
|
44
|
+
assert_failed(test_result)
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|