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,88 +2,88 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
describe "a mock, in handling arguments" do
|
|
6
|
+
before(:each) do
|
|
7
7
|
@mock = Mock.new("test mock")
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
@mock.
|
|
10
|
+
after(:each) do
|
|
11
|
+
@mock.rspec_verify
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
it "should accept true as boolean" do
|
|
15
15
|
@mock.should_receive(:random_call).with(:boolean)
|
|
16
16
|
@mock.random_call(true)
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
it "should accept false as boolean" do
|
|
20
20
|
@mock.should_receive(:random_call).with(:boolean)
|
|
21
21
|
@mock.random_call(false)
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
it "should accept fixnum as numeric" do
|
|
25
25
|
@mock.should_receive(:random_call).with(:numeric)
|
|
26
26
|
@mock.random_call(1)
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
it "should accept float as numeric" do
|
|
30
30
|
@mock.should_receive(:random_call).with(:numeric)
|
|
31
31
|
@mock.random_call(1.5)
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
it "should accept string as anything" do
|
|
35
35
|
@mock.should_receive(:random_call).with("a", :anything, "c")
|
|
36
36
|
@mock.random_call("a", "whatever", "c")
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
it "should match duck type with one method" do
|
|
40
40
|
@mock.should_receive(:random_call).with(DuckTypeArgConstraint.new(:length))
|
|
41
41
|
@mock.random_call([])
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
it "should match duck type with two methods" do
|
|
45
45
|
@mock.should_receive(:random_call).with(DuckTypeArgConstraint.new(:abs, :div))
|
|
46
46
|
@mock.random_call(1)
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
it "should match non special symbol" do
|
|
50
50
|
@mock.should_receive(:random_call).with(:some_symbol)
|
|
51
51
|
@mock.random_call(:some_symbol)
|
|
52
52
|
end
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
it "should match string" do
|
|
55
55
|
@mock.should_receive(:random_call).with(:string)
|
|
56
56
|
@mock.random_call("a string")
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
it "should match string against regexp" do
|
|
60
60
|
@mock.should_receive(:random_call).with(/bcd/)
|
|
61
61
|
@mock.random_call("abcde")
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
it "should match regexp against regexp" do
|
|
65
65
|
@mock.should_receive(:random_call).with(/bcd/)
|
|
66
66
|
@mock.random_call(/bcd/)
|
|
67
67
|
end
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
it "should match against a hash submitted and received by value" do
|
|
70
70
|
@mock.should_receive(:random_call).with(:a => "a", :b => "b")
|
|
71
71
|
@mock.random_call(:a => "a", :b => "b")
|
|
72
72
|
end
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
it "should match against a hash submitted by reference and received by value" do
|
|
75
75
|
opts = {:a => "a", :b => "b"}
|
|
76
76
|
@mock.should_receive(:random_call).with(opts)
|
|
77
77
|
@mock.random_call(:a => "a", :b => "b")
|
|
78
78
|
end
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
it "should match against a hash submitted by value and received by reference" do
|
|
81
81
|
opts = {:a => "a", :b => "b"}
|
|
82
82
|
@mock.should_receive(:random_call).with(:a => "a", :b => "b")
|
|
83
83
|
@mock.random_call(opts)
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
it "should match against a Matcher" do
|
|
87
87
|
@mock.should_receive(:msg).with(equal(37))
|
|
88
88
|
@mock.msg(37)
|
|
89
89
|
end
|
|
@@ -1,56 +1,52 @@
|
|
|
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 "should fail when exactly n times method is called less than n times" do
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "PreciseCounts" do
|
|
6
|
+
before(:each) do
|
|
7
|
+
@mock = mock("test mock")
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should fail when exactly n times method is called less than n times" do
|
|
13
11
|
@mock.should_receive(:random_call).exactly(3).times
|
|
14
12
|
@mock.random_call
|
|
15
13
|
@mock.random_call
|
|
16
14
|
lambda do
|
|
17
|
-
@mock.
|
|
18
|
-
end.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
@mock.rspec_verify
|
|
16
|
+
end.should raise_error(MockExpectationError)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should fail when exactly n times method is never called" do
|
|
22
20
|
@mock.should_receive(:random_call).exactly(3).times
|
|
23
21
|
lambda do
|
|
24
|
-
@mock.
|
|
25
|
-
end.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
@mock.rspec_verify
|
|
23
|
+
end.should raise_error(MockExpectationError)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should pass if exactly n times method is called exactly n times" do
|
|
29
27
|
@mock.should_receive(:random_call).exactly(3).times
|
|
30
28
|
@mock.random_call
|
|
31
29
|
@mock.random_call
|
|
32
30
|
@mock.random_call
|
|
33
|
-
@mock.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
@mock.rspec_verify
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should pass multiple calls with different args and counts" do
|
|
37
35
|
@mock.should_receive(:random_call).twice.with(1)
|
|
38
36
|
@mock.should_receive(:random_call).once.with(2)
|
|
39
37
|
@mock.random_call(1)
|
|
40
38
|
@mock.random_call(2)
|
|
41
39
|
@mock.random_call(1)
|
|
42
|
-
@mock.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
@mock.rspec_verify
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "should pass mutiple calls with different args" do
|
|
46
44
|
@mock.should_receive(:random_call).once.with(1)
|
|
47
45
|
@mock.should_receive(:random_call).once.with(2)
|
|
48
46
|
@mock.random_call(1)
|
|
49
47
|
@mock.random_call(2)
|
|
50
|
-
@mock.
|
|
51
|
-
|
|
48
|
+
@mock.rspec_verify
|
|
49
|
+
end
|
|
52
50
|
end
|
|
53
|
-
|
|
54
|
-
end
|
|
55
|
-
end
|
|
51
|
+
end
|
|
56
52
|
end
|
|
@@ -2,24 +2,24 @@ require File.dirname(__FILE__) + '/../../spec_helper'
|
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
describe "a mock" do
|
|
6
|
+
before(:each) do
|
|
7
7
|
@mock = mock("mock", :null_object => true)
|
|
8
8
|
end
|
|
9
|
-
|
|
10
|
-
@mock.received_message?(:message).should
|
|
9
|
+
it "should answer false for received_message? when no messages received" do
|
|
10
|
+
@mock.received_message?(:message).should be_false
|
|
11
11
|
end
|
|
12
|
-
|
|
12
|
+
it "should answer true for received_message? when message received" do
|
|
13
13
|
@mock.message
|
|
14
|
-
@mock.received_message?(:message).should
|
|
14
|
+
@mock.received_message?(:message).should be_true
|
|
15
15
|
end
|
|
16
|
-
|
|
16
|
+
it "should answer true for received_message? when message received with correct args" do
|
|
17
17
|
@mock.message 1,2,3
|
|
18
|
-
@mock.received_message?(:message, 1,2,3).should
|
|
18
|
+
@mock.received_message?(:message, 1,2,3).should be_true
|
|
19
19
|
end
|
|
20
|
-
|
|
20
|
+
it "should answer false for received_message? when message received with incorrect args" do
|
|
21
21
|
@mock.message 1,2,3
|
|
22
|
-
@mock.received_message?(:message, 1,2).should
|
|
22
|
+
@mock.received_message?(:message, 1,2).should be_false
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
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 "A method stub" do
|
|
6
|
+
before(:each) do
|
|
7
7
|
@class = Class.new do
|
|
8
8
|
def self.existing_class_method
|
|
9
9
|
:original_value
|
|
@@ -16,88 +16,88 @@ module Spec
|
|
|
16
16
|
@obj = @class.new
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
it "should allow for a mock expectation to temporarily replace a method stub on a mock" do
|
|
20
20
|
mock = Spec::Mocks::Mock.new("a mock")
|
|
21
21
|
mock.stub!(:msg).and_return(:stub_value)
|
|
22
22
|
mock.should_receive(:msg).with(:arg).and_return(:mock_value)
|
|
23
23
|
mock.msg(:arg).should equal(:mock_value)
|
|
24
24
|
mock.msg.should equal(:stub_value)
|
|
25
25
|
mock.msg.should equal(:stub_value)
|
|
26
|
-
mock.
|
|
26
|
+
mock.rspec_verify
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
it "should allow for a mock expectation to temporarily replace a method stub on a non-mock" do
|
|
30
30
|
@obj.stub!(:msg).and_return(:stub_value)
|
|
31
31
|
@obj.should_receive(:msg).with(:arg).and_return(:mock_value)
|
|
32
32
|
@obj.msg(:arg).should equal(:mock_value)
|
|
33
33
|
@obj.msg.should equal(:stub_value)
|
|
34
34
|
@obj.msg.should equal(:stub_value)
|
|
35
|
-
@obj.
|
|
35
|
+
@obj.rspec_verify
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
it "should ignore when expected message is not received" do
|
|
39
39
|
@obj.stub!(:msg)
|
|
40
40
|
lambda do
|
|
41
|
-
@obj.
|
|
42
|
-
end.
|
|
41
|
+
@obj.rspec_verify
|
|
42
|
+
end.should_not raise_error
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
it "should clear itself on rspec_verify" do
|
|
46
46
|
@obj.stub!(:this_should_go).and_return(:blah)
|
|
47
|
-
@obj.this_should_go.
|
|
48
|
-
@obj.
|
|
47
|
+
@obj.this_should_go.should == :blah
|
|
48
|
+
@obj.rspec_verify
|
|
49
49
|
lambda do
|
|
50
50
|
@obj.this_should_go
|
|
51
|
-
end.
|
|
51
|
+
end.should raise_error
|
|
52
52
|
end
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
it "should ignore when expected message is received" do
|
|
55
55
|
@obj.stub!(:msg)
|
|
56
56
|
@obj.msg
|
|
57
|
-
@obj.
|
|
57
|
+
@obj.rspec_verify
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
it "should ignore when message is received with args" do
|
|
61
61
|
@obj.stub!(:msg)
|
|
62
62
|
@obj.msg(:an_arg)
|
|
63
|
-
@obj.
|
|
63
|
+
@obj.rspec_verify
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
it "should not support with" do
|
|
67
67
|
lambda do
|
|
68
68
|
Spec::Mocks::Mock.new("a mock").stub!(:msg).with(:arg)
|
|
69
|
-
end.
|
|
69
|
+
end.should raise_error(NoMethodError)
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
it "should return expected value when expected message is received" do
|
|
73
73
|
@obj.stub!(:msg).and_return(:return_value)
|
|
74
74
|
@obj.msg.should equal(:return_value)
|
|
75
|
-
@obj.
|
|
75
|
+
@obj.rspec_verify
|
|
76
76
|
end
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
it "should return values in order to consecutive calls" do
|
|
79
79
|
return_values = ["1",2,Object.new]
|
|
80
80
|
@obj.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
|
|
81
|
-
@obj.msg.
|
|
82
|
-
@obj.msg.
|
|
83
|
-
@obj.msg.
|
|
81
|
+
@obj.msg.should == return_values[0]
|
|
82
|
+
@obj.msg.should == return_values[1]
|
|
83
|
+
@obj.msg.should == return_values[2]
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
it "should keep returning last value in consecutive calls" do
|
|
87
87
|
return_values = ["1",2,Object.new]
|
|
88
88
|
@obj.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
|
|
89
|
-
@obj.msg.
|
|
90
|
-
@obj.msg.
|
|
91
|
-
@obj.msg.
|
|
92
|
-
@obj.msg.
|
|
93
|
-
@obj.msg.
|
|
89
|
+
@obj.msg.should == return_values[0]
|
|
90
|
+
@obj.msg.should == return_values[1]
|
|
91
|
+
@obj.msg.should == return_values[2]
|
|
92
|
+
@obj.msg.should == return_values[2]
|
|
93
|
+
@obj.msg.should == return_values[2]
|
|
94
94
|
end
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
it "should revert to original instance method if existed" do
|
|
97
97
|
@obj.existing_instance_method.should equal(:original_value)
|
|
98
98
|
@obj.stub!(:existing_instance_method).and_return(:mock_value)
|
|
99
99
|
@obj.existing_instance_method.should equal(:mock_value)
|
|
100
|
-
@obj.
|
|
100
|
+
@obj.rspec_verify
|
|
101
101
|
# TODO JRUBY: This causes JRuby to fail with:
|
|
102
102
|
# NativeException in 'Stub should revert to original instance method if existed'
|
|
103
103
|
# java.lang.ArrayIndexOutOfBoundsException: 0
|
|
@@ -118,39 +118,39 @@ module Spec
|
|
|
118
118
|
@obj.existing_instance_method.should equal(:original_value)
|
|
119
119
|
end
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
it "should revert to original class method if existed" do
|
|
122
122
|
@class.existing_class_method.should equal(:original_value)
|
|
123
123
|
@class.stub!(:existing_class_method).and_return(:mock_value)
|
|
124
124
|
@class.existing_class_method.should equal(:mock_value)
|
|
125
|
-
@class.
|
|
125
|
+
@class.rspec_verify
|
|
126
126
|
@class.existing_class_method.should equal(:original_value)
|
|
127
127
|
end
|
|
128
128
|
|
|
129
|
-
|
|
129
|
+
it "should clear itself on rspec_verify" do
|
|
130
130
|
@obj.stub!(:this_should_go).and_return(:blah)
|
|
131
|
-
@obj.this_should_go.
|
|
132
|
-
@obj.
|
|
131
|
+
@obj.this_should_go.should == :blah
|
|
132
|
+
@obj.rspec_verify
|
|
133
133
|
lambda do
|
|
134
134
|
@obj.this_should_go
|
|
135
|
-
end.
|
|
135
|
+
end.should raise_error
|
|
136
136
|
end
|
|
137
137
|
|
|
138
|
-
|
|
138
|
+
it "should support yielding" do
|
|
139
139
|
@obj.stub!(:method_that_yields).and_yield(:yielded_value)
|
|
140
140
|
current_value = :value_before
|
|
141
141
|
@obj.method_that_yields {|val| current_value = val}
|
|
142
|
-
current_value.
|
|
143
|
-
@obj.
|
|
142
|
+
current_value.should == :yielded_value
|
|
143
|
+
@obj.rspec_verify
|
|
144
144
|
end
|
|
145
145
|
|
|
146
|
-
|
|
146
|
+
it "should throw when told to" do
|
|
147
147
|
@mock.stub!(:something).and_throw(:blech)
|
|
148
148
|
lambda do
|
|
149
149
|
@mock.something
|
|
150
|
-
end.
|
|
150
|
+
end.should throw_symbol(:blech)
|
|
151
151
|
end
|
|
152
152
|
|
|
153
|
-
|
|
153
|
+
it "should support overriding w/ a new stub" do
|
|
154
154
|
@stub.stub!(:existing_instance_method).and_return(:updated_stub_value)
|
|
155
155
|
@stub.existing_instance_method.should == :updated_stub_value
|
|
156
156
|
end
|
|
@@ -2,65 +2,65 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
@mock =
|
|
8
|
-
:auto_verify => false
|
|
9
|
-
})
|
|
5
|
+
describe "TwiceCounts" do
|
|
6
|
+
before(:each) do
|
|
7
|
+
@mock = mock("test mock")
|
|
10
8
|
end
|
|
11
9
|
|
|
12
|
-
|
|
10
|
+
it "twice should fail when call count is higher than expected" do
|
|
13
11
|
@mock.should_receive(:random_call).twice
|
|
14
12
|
@mock.random_call
|
|
15
13
|
@mock.random_call
|
|
16
14
|
@mock.random_call
|
|
17
15
|
lambda do
|
|
18
|
-
@mock.
|
|
19
|
-
end.
|
|
16
|
+
@mock.rspec_verify
|
|
17
|
+
end.should raise_error(MockExpectationError)
|
|
20
18
|
end
|
|
21
19
|
|
|
22
|
-
|
|
20
|
+
it "twice should fail when call count is lower than expected" do
|
|
23
21
|
@mock.should_receive(:random_call).twice
|
|
24
22
|
@mock.random_call
|
|
25
23
|
lambda do
|
|
26
|
-
@mock.
|
|
27
|
-
end.
|
|
24
|
+
@mock.rspec_verify
|
|
25
|
+
end.should raise_error(MockExpectationError)
|
|
28
26
|
end
|
|
29
27
|
|
|
30
|
-
|
|
28
|
+
it "twice should fail when called twice with wrong args on the first call" do
|
|
31
29
|
@mock.should_receive(:random_call).twice.with("1", 1)
|
|
32
30
|
lambda do
|
|
33
31
|
@mock.random_call(1, "1")
|
|
34
|
-
end.
|
|
32
|
+
end.should raise_error(MockExpectationError)
|
|
33
|
+
@mock.rspec_reset
|
|
35
34
|
end
|
|
36
35
|
|
|
37
|
-
|
|
36
|
+
it "twice should fail when called twice with wrong args on the second call" do
|
|
38
37
|
@mock.should_receive(:random_call).twice.with("1", 1)
|
|
39
38
|
@mock.random_call("1", 1)
|
|
40
39
|
lambda do
|
|
41
40
|
@mock.random_call(1, "1")
|
|
42
|
-
end.
|
|
41
|
+
end.should raise_error(MockExpectationError)
|
|
42
|
+
@mock.rspec_reset
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
it "twice should pass when called twice" do
|
|
46
46
|
@mock.should_receive(:random_call).twice
|
|
47
47
|
@mock.random_call
|
|
48
48
|
@mock.random_call
|
|
49
|
-
@mock.
|
|
49
|
+
@mock.rspec_verify
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
it "twice should pass when called twice with specified args" do
|
|
53
53
|
@mock.should_receive(:random_call).twice.with("1", 1)
|
|
54
54
|
@mock.random_call("1", 1)
|
|
55
55
|
@mock.random_call("1", 1)
|
|
56
|
-
@mock.
|
|
56
|
+
@mock.rspec_verify
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
it "twice should pass when called twice with unspecified args" do
|
|
60
60
|
@mock.should_receive(:random_call).twice
|
|
61
61
|
@mock.random_call("1")
|
|
62
62
|
@mock.random_call(1)
|
|
63
|
-
@mock.
|
|
63
|
+
@mock.rspec_verify
|
|
64
64
|
end
|
|
65
65
|
end
|
|
66
66
|
end
|