rspec 0.8.2 → 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/CHANGES +125 -9
- data/EXAMPLES.rd +50 -27
- data/README +14 -1
- data/Rakefile +95 -42
- data/UPGRADE +31 -0
- data/bin/spec +0 -1
- data/bin/spec_translator +6 -0
- data/examples/auto_spec_description_example.rb +19 -0
- data/examples/{setup_teardown_example.rb → before_and_after_example.rb} +6 -6
- data/examples/behave_as_example.rb +45 -0
- data/examples/custom_expectation_matchers.rb +13 -12
- data/examples/dynamic_spec.rb +2 -2
- data/examples/file_accessor_spec.rb +2 -2
- data/examples/greeter_spec.rb +3 -3
- data/examples/helper_method_example.rb +2 -2
- data/examples/io_processor_spec.rb +4 -4
- data/examples/legacy_spec.rb +10 -0
- data/examples/mocking_example.rb +5 -5
- data/examples/multi_threaded_behaviour_runner.rb +25 -0
- data/examples/partial_mock_example.rb +4 -4
- data/examples/predicate_example.rb +4 -4
- data/examples/priority.txt +1 -0
- data/examples/shared_behaviours_example.rb +31 -0
- data/examples/stack_spec.rb +52 -69
- data/examples/stubbing_example.rb +10 -10
- data/examples/test_case_adapter_example.rb +26 -0
- data/examples/test_case_spec.rb +6 -6
- data/lib/spec.rb +9 -4
- data/lib/spec/dsl.rb +10 -0
- data/lib/spec/dsl/behaviour.rb +189 -0
- data/lib/spec/dsl/behaviour_callbacks.rb +43 -0
- data/lib/spec/dsl/behaviour_eval.rb +170 -0
- data/lib/spec/dsl/behaviour_factory.rb +32 -0
- data/lib/spec/dsl/composite_proc_builder.rb +28 -0
- data/lib/spec/dsl/configuration.rb +38 -0
- data/lib/spec/dsl/description.rb +34 -0
- data/lib/spec/dsl/example.rb +114 -0
- data/lib/spec/dsl/example_matcher.rb +28 -0
- data/lib/spec/{runner/spec_should_raise_handler.rb → dsl/example_should_raise_handler.rb} +4 -4
- data/lib/spec/expectations.rb +0 -3
- data/lib/spec/expectations/differs/default.rb +0 -1
- data/lib/spec/expectations/extensions.rb +0 -1
- data/lib/spec/expectations/extensions/object.rb +10 -53
- data/lib/spec/expectations/handler.rb +14 -18
- data/lib/spec/extensions.rb +1 -0
- data/lib/spec/extensions/object.rb +6 -0
- data/lib/spec/matchers.rb +19 -21
- data/lib/spec/matchers/be.rb +40 -11
- data/lib/spec/matchers/be_close.rb +2 -2
- data/lib/spec/matchers/operator_matcher.rb +52 -0
- data/lib/spec/matchers/respond_to.rb +21 -11
- data/lib/spec/mocks.rb +5 -28
- data/lib/spec/mocks/argument_constraint_matchers.rb +12 -0
- data/lib/spec/mocks/argument_expectation.rb +7 -4
- data/lib/spec/mocks/methods.rb +11 -16
- data/lib/spec/mocks/mock.rb +6 -3
- data/lib/spec/mocks/{mock_handler.rb → proxy.rb} +4 -7
- data/lib/spec/mocks/space.rb +28 -0
- data/lib/spec/mocks/spec_methods.rb +30 -0
- data/lib/spec/rake/spectask.rb +23 -21
- data/lib/spec/rake/verify_rcov.rb +1 -0
- data/lib/spec/runner.rb +88 -35
- data/lib/spec/runner/backtrace_tweaker.rb +2 -1
- data/lib/spec/runner/behaviour_runner.rb +102 -0
- data/lib/spec/runner/command_line.rb +5 -17
- data/lib/spec/runner/drb_command_line.rb +2 -2
- data/lib/spec/runner/extensions/kernel.rb +22 -9
- data/lib/spec/runner/formatter.rb +4 -0
- data/lib/spec/runner/formatter/base_formatter.rb +63 -0
- data/lib/spec/runner/formatter/base_text_formatter.rb +22 -52
- data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +25 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +22 -0
- data/lib/spec/runner/formatter/html_formatter.rb +74 -29
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +6 -8
- data/lib/spec/runner/formatter/rdoc_formatter.rb +6 -6
- data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
- data/lib/spec/runner/formatter/specdoc_formatter.rb +6 -6
- data/lib/spec/runner/heckle_runner.rb +8 -7
- data/lib/spec/runner/option_parser.rb +136 -55
- data/lib/spec/runner/options.rb +26 -0
- data/lib/spec/runner/reporter.rb +38 -31
- data/lib/spec/runner/spec_parser.rb +22 -13
- data/lib/spec/test_case_adapter.rb +10 -0
- data/lib/spec/translator.rb +103 -86
- data/lib/spec/version.rb +7 -15
- data/plugins/mock_frameworks/flexmock.rb +27 -0
- data/plugins/mock_frameworks/mocha.rb +21 -0
- data/plugins/mock_frameworks/rspec.rb +18 -0
- data/spec/spec/dsl/behaviour_eval_spec.rb +49 -0
- data/spec/spec/dsl/behaviour_factory_spec.rb +30 -0
- data/spec/spec/dsl/behaviour_spec.rb +508 -0
- data/spec/spec/dsl/composite_proc_builder_spec.rb +57 -0
- data/spec/spec/dsl/configuration_spec.rb +43 -0
- data/spec/spec/dsl/description_spec.rb +51 -0
- data/spec/spec/dsl/example_class_spec.rb +24 -0
- data/spec/spec/dsl/example_instance_spec.rb +140 -0
- data/spec/spec/dsl/example_should_raise_spec.rb +137 -0
- data/spec/spec/dsl/predicate_matcher_spec.rb +21 -0
- data/spec/spec/dsl/shared_behaviour_spec.rb +186 -0
- data/spec/spec/expectations/differs/default_spec.rb +12 -12
- data/spec/spec/expectations/extensions/object_spec.rb +10 -10
- data/spec/spec/expectations/fail_with_spec.rb +20 -20
- data/spec/spec/matchers/be_close_spec.rb +37 -31
- data/spec/spec/matchers/be_spec.rb +50 -41
- data/spec/spec/matchers/change_spec.rb +54 -54
- data/spec/spec/matchers/description_generation_spec.rb +43 -31
- data/spec/spec/matchers/eql_spec.rb +24 -37
- data/spec/spec/matchers/equal_spec.rb +24 -37
- data/spec/spec/matchers/exist_spec.rb +48 -0
- data/spec/spec/matchers/handler_spec.rb +36 -23
- data/spec/spec/matchers/has_spec.rb +8 -8
- data/spec/spec/matchers/have_spec.rb +38 -38
- data/spec/spec/matchers/include_spec.rb +6 -6
- data/spec/spec/matchers/match_spec.rb +8 -8
- data/spec/spec/matchers/matcher_methods_spec.rb +24 -31
- data/spec/spec/matchers/raise_error_spec.rb +34 -34
- data/spec/spec/matchers/respond_to_spec.rb +32 -8
- data/spec/spec/matchers/satisfy_spec.rb +6 -6
- data/spec/spec/matchers/should_===_spec.rb +38 -0
- data/spec/spec/matchers/should_==_spec.rb +37 -0
- data/spec/spec/matchers/should_=~_spec.rb +36 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +47 -55
- data/spec/spec/mocks/any_number_of_times_spec.rb +16 -21
- data/spec/spec/mocks/argument_expectation_spec.rb +3 -3
- data/spec/spec/mocks/at_least_spec.rb +30 -30
- data/spec/spec/mocks/at_most_spec.rb +53 -57
- data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
- data/spec/spec/mocks/bug_report_7611_spec.rb +3 -3
- data/spec/spec/mocks/bug_report_7805_spec.rb +3 -3
- data/spec/spec/mocks/bug_report_8165_spec.rb +5 -5
- data/spec/spec/mocks/bug_report_8302_spec.rb +5 -5
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +26 -27
- data/spec/spec/mocks/mock_ordering_spec.rb +19 -15
- data/spec/spec/mocks/mock_space_spec.rb +54 -0
- data/spec/spec/mocks/mock_spec.rb +111 -141
- data/spec/spec/mocks/multiple_return_value_spec.rb +48 -48
- data/spec/spec/mocks/null_object_mock_spec.rb +10 -10
- data/spec/spec/mocks/once_counts_spec.rb +32 -35
- data/spec/spec/mocks/options_hash_spec.rb +12 -10
- data/spec/spec/mocks/partial_mock_spec.rb +15 -15
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +24 -22
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +19 -19
- data/spec/spec/mocks/precise_counts_spec.rb +28 -32
- data/spec/spec/mocks/record_messages_spec.rb +10 -10
- data/spec/spec/mocks/stub_spec.rb +45 -45
- data/spec/spec/mocks/twice_counts_spec.rb +21 -21
- data/spec/spec/package/bin_spec_spec.rb +12 -0
- data/spec/spec/runner/behaviour_runner_spec.rb +114 -0
- data/spec/spec/runner/command_line_spec.rb +8 -8
- data/spec/spec/runner/context_matching_spec.rb +14 -15
- data/spec/spec/runner/drb_command_line_spec.rb +12 -12
- data/spec/spec/runner/execution_context_spec.rb +8 -29
- data/spec/spec/runner/extensions/kernel_spec.rb +36 -0
- data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +27 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +28 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +9 -8
- data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +6 -6
- data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +10 -10
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +22 -27
- data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +6 -5
- data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +17 -17
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +11 -0
- data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +6 -6
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +17 -17
- data/spec/spec/runner/heckle_runner_spec.rb +21 -21
- data/spec/spec/runner/heckler_spec.rb +5 -5
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +12 -12
- data/spec/spec/runner/object_ext_spec.rb +3 -3
- data/spec/spec/runner/option_parser_spec.rb +171 -102
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +21 -12
- data/spec/spec/runner/reporter_spec.rb +106 -97
- data/spec/spec/runner/spec_matcher_spec.rb +46 -51
- data/spec/spec/runner/spec_parser_spec.rb +72 -16
- data/spec/spec/spec_classes.rb +12 -3
- data/spec/spec/translator_spec.rb +165 -36
- metadata +66 -76
- data/RELEASE-PLAN +0 -117
- data/examples/auto_spec_name_generation_example.rb +0 -18
- data/lib/spec/callback.rb +0 -11
- data/lib/spec/callback/callback_container.rb +0 -60
- data/lib/spec/callback/extensions/module.rb +0 -24
- data/lib/spec/callback/extensions/object.rb +0 -37
- data/lib/spec/deprecated.rb +0 -3
- data/lib/spec/expectations/extensions/proc.rb +0 -57
- data/lib/spec/expectations/should.rb +0 -5
- data/lib/spec/expectations/should/base.rb +0 -64
- data/lib/spec/expectations/should/change.rb +0 -69
- data/lib/spec/expectations/should/have.rb +0 -128
- data/lib/spec/expectations/should/not.rb +0 -74
- data/lib/spec/expectations/should/should.rb +0 -81
- data/lib/spec/expectations/sugar.rb +0 -47
- data/lib/spec/runner/context.rb +0 -154
- data/lib/spec/runner/context_eval.rb +0 -142
- data/lib/spec/runner/context_runner.rb +0 -55
- data/lib/spec/runner/execution_context.rb +0 -17
- data/lib/spec/runner/spec_matcher.rb +0 -25
- data/lib/spec/runner/specification.rb +0 -114
- data/spec/spec/callback/callback_container_spec.rb +0 -27
- data/spec/spec/callback/module_spec.rb +0 -37
- data/spec/spec/callback/object_spec.rb +0 -90
- data/spec/spec/callback/object_with_class_callback_spec.rb +0 -19
- data/spec/spec/expectations/should/should_==_spec.rb +0 -19
- data/spec/spec/expectations/should/should_=~_spec.rb +0 -13
- data/spec/spec/expectations/should/should_be_a_kind_of_spec.rb +0 -21
- data/spec/spec/expectations/should/should_be_an_instance_of_spec.rb +0 -30
- data/spec/spec/expectations/should/should_be_arbitrary_predicate_spec.rb +0 -81
- data/spec/spec/expectations/should/should_be_close_spec.rb +0 -18
- data/spec/spec/expectations/should/should_be_comparison_operator_spec.rb +0 -44
- data/spec/spec/expectations/should/should_be_false_spec.rb +0 -39
- data/spec/spec/expectations/should/should_be_spec.rb +0 -11
- data/spec/spec/expectations/should/should_be_true_spec.rb +0 -27
- data/spec/spec/expectations/should/should_change_spec.rb +0 -184
- data/spec/spec/expectations/should/should_eql_spec.rb +0 -11
- data/spec/spec/expectations/should/should_equal_spec.rb +0 -11
- data/spec/spec/expectations/should/should_have_at_least_spec.rb +0 -53
- data/spec/spec/expectations/should/should_have_at_most_spec.rb +0 -45
- data/spec/spec/expectations/should/should_have_key_spec.rb +0 -21
- data/spec/spec/expectations/should/should_have_spec.rb +0 -64
- data/spec/spec/expectations/should/should_include_spec.rb +0 -59
- data/spec/spec/expectations/should/should_match_spec.rb +0 -25
- data/spec/spec/expectations/should/should_not_==_spec.rb +0 -15
- data/spec/spec/expectations/should/should_not_be_a_kind_of_spec.rb +0 -21
- data/spec/spec/expectations/should/should_not_be_an_instance_of_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_be_arbitrary_predicate_spec.rb +0 -68
- data/spec/spec/expectations/should/should_not_be_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_change_spec.rb +0 -24
- data/spec/spec/expectations/should/should_not_eql_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_equal_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_have_key_spec.rb +0 -15
- data/spec/spec/expectations/should/should_not_include_spec.rb +0 -58
- data/spec/spec/expectations/should/should_not_match_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_raise_spec.rb +0 -75
- data/spec/spec/expectations/should/should_not_respond_to_spec.rb +0 -15
- data/spec/spec/expectations/should/should_not_throw_spec.rb +0 -35
- data/spec/spec/expectations/should/should_raise_spec.rb +0 -66
- data/spec/spec/expectations/should/should_respond_to_spec.rb +0 -15
- data/spec/spec/expectations/should/should_satisfy_spec.rb +0 -35
- data/spec/spec/expectations/should/should_throw_spec.rb +0 -27
- data/spec/spec/runner/context_runner_spec.rb +0 -100
- data/spec/spec/runner/context_spec.rb +0 -405
- data/spec/spec/runner/kernel_ext_spec.rb +0 -16
- data/spec/spec/runner/spec_name_generation_spec.rb +0 -102
- data/spec/spec/runner/specification_class_spec.rb +0 -72
- data/spec/spec/runner/specification_instance_spec.rb +0 -160
- data/spec/spec/runner/specification_should_raise_spec.rb +0 -136
|
@@ -2,110 +2,110 @@ require File.dirname(__FILE__) + '/../../spec_helper'
|
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
describe "a Mock expectation with multiple return values and no specified count" do
|
|
6
|
+
before(:each) do
|
|
7
7
|
@mock = Mock.new("mock")
|
|
8
8
|
@return_values = ["1",2,Object.new]
|
|
9
9
|
@mock.should_receive(:message).and_return(@return_values[0],@return_values[1],@return_values[2])
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
@mock.message.
|
|
14
|
-
@mock.message.
|
|
15
|
-
@mock.message.
|
|
16
|
-
@mock.
|
|
12
|
+
it "should return values in order to consecutive calls" do
|
|
13
|
+
@mock.message.should == @return_values[0]
|
|
14
|
+
@mock.message.should == @return_values[1]
|
|
15
|
+
@mock.message.should == @return_values[2]
|
|
16
|
+
@mock.rspec_verify
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
it "should complain when there are too few calls" do
|
|
20
20
|
third = Object.new
|
|
21
|
-
@mock.message.
|
|
22
|
-
@mock.message.
|
|
23
|
-
lambda { @mock.
|
|
21
|
+
@mock.message.should == @return_values[0]
|
|
22
|
+
@mock.message.should == @return_values[1]
|
|
23
|
+
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it twice")
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
it "should complain when there are too many calls" do
|
|
27
27
|
third = Object.new
|
|
28
|
-
@mock.message.
|
|
29
|
-
@mock.message.
|
|
30
|
-
@mock.message.
|
|
31
|
-
@mock.message.
|
|
32
|
-
lambda { @mock.
|
|
28
|
+
@mock.message.should == @return_values[0]
|
|
29
|
+
@mock.message.should == @return_values[1]
|
|
30
|
+
@mock.message.should == @return_values[2]
|
|
31
|
+
@mock.message.should == @return_values[2]
|
|
32
|
+
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it 4 times")
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
describe "a Mock expectation with multiple return values with a specified count equal to the number of values" do
|
|
37
|
+
before(:each) do
|
|
38
38
|
@mock = Mock.new("mock")
|
|
39
39
|
@return_values = ["1",2,Object.new]
|
|
40
40
|
@mock.should_receive(:message).exactly(3).times.and_return(@return_values[0],@return_values[1],@return_values[2])
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
@mock.message.
|
|
45
|
-
@mock.message.
|
|
46
|
-
@mock.message.
|
|
47
|
-
@mock.
|
|
43
|
+
it "should return values in order to consecutive calls" do
|
|
44
|
+
@mock.message.should == @return_values[0]
|
|
45
|
+
@mock.message.should == @return_values[1]
|
|
46
|
+
@mock.message.should == @return_values[2]
|
|
47
|
+
@mock.rspec_verify
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
it "should complain when there are too few calls" do
|
|
51
51
|
third = Object.new
|
|
52
|
-
@mock.message.
|
|
53
|
-
@mock.message.
|
|
54
|
-
lambda { @mock.
|
|
52
|
+
@mock.message.should == @return_values[0]
|
|
53
|
+
@mock.message.should == @return_values[1]
|
|
54
|
+
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it twice")
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
it "should complain when there are too many calls" do
|
|
58
58
|
third = Object.new
|
|
59
|
-
@mock.message.
|
|
60
|
-
@mock.message.
|
|
61
|
-
@mock.message.
|
|
62
|
-
@mock.message.
|
|
63
|
-
lambda { @mock.
|
|
59
|
+
@mock.message.should == @return_values[0]
|
|
60
|
+
@mock.message.should == @return_values[1]
|
|
61
|
+
@mock.message.should == @return_values[2]
|
|
62
|
+
@mock.message.should == @return_values[2]
|
|
63
|
+
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it 4 times")
|
|
64
64
|
end
|
|
65
65
|
end
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
describe "a Mock expectation with multiple return values specifying at_least less than the number of values" do
|
|
68
|
+
before(:each) do
|
|
69
69
|
@mock = Mock.new("mock")
|
|
70
70
|
@mock.should_receive(:message).at_least(:twice).with(:no_args).and_return(11, 22)
|
|
71
71
|
end
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
it "should use last return value for subsequent calls" do
|
|
74
74
|
@mock.message.should equal(11)
|
|
75
75
|
@mock.message.should equal(22)
|
|
76
76
|
@mock.message.should equal(22)
|
|
77
|
-
@mock.
|
|
77
|
+
@mock.rspec_verify
|
|
78
78
|
end
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
it "should fail when called less than the specified number" do
|
|
81
81
|
@mock.message.should equal(11)
|
|
82
|
-
lambda { @mock.
|
|
82
|
+
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (no args) twice, but received it once")
|
|
83
83
|
end
|
|
84
84
|
end
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
describe "a Mock expectation with multiple return values with a specified count larger than the number of values" do
|
|
86
|
+
before(:each) do
|
|
87
87
|
@mock = Mock.new("mock")
|
|
88
88
|
@mock.should_receive(:message).exactly(3).times.and_return(11, 22)
|
|
89
89
|
end
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
it "should use last return value for subsequent calls" do
|
|
92
92
|
@mock.message.should equal(11)
|
|
93
93
|
@mock.message.should equal(22)
|
|
94
94
|
@mock.message.should equal(22)
|
|
95
|
-
@mock.
|
|
95
|
+
@mock.rspec_verify
|
|
96
96
|
end
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
it "should fail when called less than the specified number" do
|
|
99
99
|
@mock.message.should equal(11)
|
|
100
|
-
lambda { @mock.
|
|
100
|
+
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it once")
|
|
101
101
|
end
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
it "should fail when called greater than the specified number" do
|
|
104
104
|
@mock.message.should equal(11)
|
|
105
105
|
@mock.message.should equal(22)
|
|
106
106
|
@mock.message.should equal(22)
|
|
107
107
|
@mock.message.should equal(22)
|
|
108
|
-
lambda { @mock.
|
|
108
|
+
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock 'mock' expected :message with (any args) 3 times, but received it 4 times")
|
|
109
109
|
end
|
|
110
110
|
end
|
|
111
111
|
end
|
|
@@ -2,35 +2,35 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
describe "a mock acting as a NullObject" do
|
|
6
|
+
before(:each) do
|
|
7
7
|
@mock = Mock.new("null_object", :null_object => true)
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
it "should allow explicit expectation" do
|
|
11
11
|
@mock.should_receive(:something)
|
|
12
12
|
@mock.something
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
it "should fail verification when explicit exception not met" do
|
|
16
16
|
lambda do
|
|
17
17
|
@mock.should_receive(:something)
|
|
18
|
-
@mock.
|
|
19
|
-
end.
|
|
18
|
+
@mock.rspec_verify
|
|
19
|
+
end.should raise_error(MockExpectationError)
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
it "should ignore unexpected methods" do
|
|
23
23
|
@mock.random_call("a", "d", "c")
|
|
24
|
-
@mock.
|
|
24
|
+
@mock.rspec_verify
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
it "should expected message with different args first" do
|
|
28
28
|
@mock.should_receive(:message).with(:expected_arg)
|
|
29
29
|
@mock.message(:unexpected_arg)
|
|
30
30
|
@mock.message(:expected_arg)
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
it "should expected message with different args second" do
|
|
34
34
|
@mock.should_receive(:message).with(:expected_arg)
|
|
35
35
|
@mock.message(:expected_arg)
|
|
36
36
|
@mock.message(:unexpected_arg)
|
|
@@ -1,56 +1,53 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
|
-
module Mocks
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
@mock =
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
end
|
|
12
|
-
specify "once should fail when called once with wrong args" do
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "OnceCounts" do
|
|
6
|
+
before(:each) do
|
|
7
|
+
@mock = mock("test mock")
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "once should fail when called once with wrong args" do
|
|
13
11
|
@mock.should_receive(:random_call).once.with("a", "b", "c")
|
|
14
12
|
lambda do
|
|
15
13
|
@mock.random_call("d", "e", "f")
|
|
16
|
-
end.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
end.should raise_error(MockExpectationError)
|
|
15
|
+
@mock.rspec_reset
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "once should fail when called twice" do
|
|
20
19
|
@mock.should_receive(:random_call).once
|
|
21
20
|
@mock.random_call
|
|
22
21
|
@mock.random_call
|
|
23
22
|
lambda do
|
|
24
|
-
@mock.
|
|
25
|
-
end.
|
|
23
|
+
@mock.rspec_verify
|
|
24
|
+
end.should raise_error(MockExpectationError)
|
|
25
|
+
end
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
specify "once should fail when not called" do
|
|
27
|
+
it "once should fail when not called" do
|
|
29
28
|
@mock.should_receive(:random_call).once
|
|
30
29
|
lambda do
|
|
31
|
-
@mock.
|
|
32
|
-
end.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
@mock.rspec_verify
|
|
31
|
+
end.should raise_error(MockExpectationError)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "once should pass when called once" do
|
|
36
35
|
@mock.should_receive(:random_call).once
|
|
37
36
|
@mock.random_call
|
|
38
|
-
@mock.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
@mock.rspec_verify
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "once should pass when called once with specified args" do
|
|
42
41
|
@mock.should_receive(:random_call).once.with("a", "b", "c")
|
|
43
42
|
@mock.random_call("a", "b", "c")
|
|
44
|
-
@mock.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
@mock.rspec_verify
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "once should pass when called once with unspecified args" do
|
|
48
47
|
@mock.should_receive(:random_call).once
|
|
49
48
|
@mock.random_call("a", "b", "c")
|
|
50
|
-
@mock.
|
|
51
|
-
|
|
49
|
+
@mock.rspec_verify
|
|
50
|
+
end
|
|
52
51
|
end
|
|
53
|
-
|
|
54
|
-
end
|
|
55
|
-
end
|
|
52
|
+
end
|
|
56
53
|
end
|
|
@@ -2,29 +2,31 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
spec = Spec::
|
|
5
|
+
describe "calling :should_receive with an options hash" do
|
|
6
|
+
it "should report the file and line submitted with :expected_from" do
|
|
7
|
+
spec = Spec::DSL::Example.new "spec" do
|
|
8
8
|
mock = Spec::Mocks::Mock.new("a mock")
|
|
9
9
|
mock.should_receive(:message, :expected_from => "/path/to/blah.ext:37")
|
|
10
|
+
mock.rspec_verify
|
|
10
11
|
end
|
|
11
12
|
reporter = mock("reporter", :null_object => true)
|
|
12
|
-
reporter.should_receive(:
|
|
13
|
-
error.backtrace.detect {|line| line =~ /\/path\/to\/blah.ext:37/}.
|
|
13
|
+
reporter.should_receive(:example_finished) do |spec, error|
|
|
14
|
+
error.backtrace.detect {|line| line =~ /\/path\/to\/blah.ext:37/}.should_not be_nil
|
|
14
15
|
end
|
|
15
|
-
spec.run(reporter, nil, nil, nil,
|
|
16
|
+
spec.run(reporter, nil, nil, nil, Object.new)
|
|
16
17
|
end
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
spec = Spec::
|
|
19
|
+
it "should use the message supplied with :message" do
|
|
20
|
+
spec = Spec::DSL::Example.new "spec" do
|
|
20
21
|
mock = Spec::Mocks::Mock.new("a mock")
|
|
21
22
|
mock.should_receive(:message, :message => "recebi nada")
|
|
23
|
+
mock.rspec_verify
|
|
22
24
|
end
|
|
23
25
|
reporter = mock("reporter", :null_object => true)
|
|
24
|
-
reporter.should_receive(:
|
|
26
|
+
reporter.should_receive(:example_finished) do |spec, error|
|
|
25
27
|
error.message.should == "recebi nada"
|
|
26
28
|
end
|
|
27
|
-
spec.run(reporter, nil, nil, nil,
|
|
29
|
+
spec.run(reporter, nil, nil, nil, Object.new)
|
|
28
30
|
end
|
|
29
31
|
end
|
|
30
32
|
end
|
|
@@ -2,49 +2,49 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
describe "using a Partial Mock," do
|
|
6
|
+
before(:each) do
|
|
7
7
|
@object = Object.new
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
it "should_not_receive should mock out the method" do
|
|
11
11
|
@object.should_not_receive(:fuhbar)
|
|
12
12
|
@object.fuhbar
|
|
13
13
|
lambda do
|
|
14
|
-
@object.
|
|
15
|
-
end.
|
|
14
|
+
@object.rspec_verify
|
|
15
|
+
end.should raise_error(Spec::Mocks::MockExpectationError)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
@object.should_not_receive(:foobar).
|
|
18
|
+
it "should_not_receive should return a negative message expectation" do
|
|
19
|
+
@object.should_not_receive(:foobar).should be_kind_of(NegativeMessageExpectation)
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
it "should_receive should mock out the method" do
|
|
23
23
|
@object.should_receive(:foobar).with(:test_param).and_return(1)
|
|
24
24
|
@object.foobar(:test_param).should equal(1)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
it "should_receive should handle a hash" do
|
|
28
28
|
@object.should_receive(:foobar).with(:key => "value").and_return(1)
|
|
29
29
|
@object.foobar(:key => "value").should equal(1)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
it "should_receive should handle an inner hash" do
|
|
33
33
|
hash = {:a => {:key => "value"}}
|
|
34
34
|
@object.should_receive(:foobar).with(:key => "value").and_return(1)
|
|
35
35
|
@object.foobar(hash[:a]).should equal(1)
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
@object.should_receive(:foobar).
|
|
38
|
+
it "should_receive should return a message expectation" do
|
|
39
|
+
@object.should_receive(:foobar).should be_kind_of(MessageExpectation)
|
|
40
40
|
@object.foobar
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
it "should_receive should verify method was called" do
|
|
44
44
|
@object.should_receive(:foobar).with(:test_param).and_return(1)
|
|
45
45
|
lambda do
|
|
46
|
-
@object.
|
|
47
|
-
end.
|
|
46
|
+
@object.rspec_verify
|
|
47
|
+
end.should raise_error(Spec::Mocks::MockExpectationError)
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
end
|
|
@@ -2,8 +2,8 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
describe "PartialMockUsingMocksDirectly" do
|
|
6
|
+
before(:each) do
|
|
7
7
|
|
|
8
8
|
klass=Class.new
|
|
9
9
|
klass.class_eval do
|
|
@@ -14,47 +14,49 @@ context "PartialMockUsingMocksDirectly" do
|
|
|
14
14
|
@obj = klass.new
|
|
15
15
|
|
|
16
16
|
end
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
end
|
|
26
|
-
|
|
17
|
+
|
|
18
|
+
# See http://rubyforge.org/tracker/index.php?func=detail&aid=10263&group_id=797&atid=3149
|
|
19
|
+
# specify "should clear expectations on verify" do
|
|
20
|
+
# @obj.should_receive(:msg)
|
|
21
|
+
# @obj.msg
|
|
22
|
+
# @obj.rspec_verify
|
|
23
|
+
# lambda do
|
|
24
|
+
# @obj.msg
|
|
25
|
+
# end.should raise_error(NoMethodError)
|
|
26
|
+
#
|
|
27
|
+
# end
|
|
28
|
+
it "should fail when expected message is not received" do
|
|
27
29
|
@obj.should_receive(:msg)
|
|
28
30
|
lambda do
|
|
29
|
-
@obj.
|
|
30
|
-
end.
|
|
31
|
+
@obj.rspec_verify
|
|
32
|
+
end.should raise_error(MockExpectationError)
|
|
31
33
|
|
|
32
34
|
end
|
|
33
|
-
|
|
35
|
+
it "should fail when message is received with incorrect args" do
|
|
34
36
|
@obj.should_receive(:msg).with(:correct_arg)
|
|
35
37
|
lambda do
|
|
36
38
|
@obj.msg(:incorrect_arg)
|
|
37
|
-
end.
|
|
39
|
+
end.should raise_error(MockExpectationError)
|
|
38
40
|
@obj.msg(:correct_arg)
|
|
39
41
|
|
|
40
42
|
end
|
|
41
|
-
|
|
43
|
+
it "should pass when expected message is received" do
|
|
42
44
|
@obj.should_receive(:msg)
|
|
43
45
|
@obj.msg
|
|
44
|
-
@obj.
|
|
46
|
+
@obj.rspec_verify
|
|
45
47
|
|
|
46
48
|
end
|
|
47
|
-
|
|
49
|
+
it "should pass when message is received with correct args" do
|
|
48
50
|
@obj.should_receive(:msg).with(:correct_arg)
|
|
49
51
|
@obj.msg(:correct_arg)
|
|
50
|
-
@obj.
|
|
52
|
+
@obj.rspec_verify
|
|
51
53
|
|
|
52
54
|
end
|
|
53
|
-
|
|
55
|
+
it "should revert to original method if existed" do
|
|
54
56
|
@obj.existing_method.should equal(:original_value)
|
|
55
57
|
@obj.should_receive(:existing_method).and_return(:mock_value)
|
|
56
58
|
@obj.existing_method.should equal(:mock_value)
|
|
57
|
-
@obj.
|
|
59
|
+
@obj.rspec_verify
|
|
58
60
|
@obj.existing_method.should equal(:original_value)
|
|
59
61
|
|
|
60
62
|
end
|