newbamboo-rspec 1.1.12
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/.autotest +4 -0
- data/History.txt +1263 -0
- data/License.txt +22 -0
- data/Manifest.txt +327 -0
- data/README.txt +57 -0
- data/Rakefile +104 -0
- data/TODO.txt +18 -0
- data/bin/autospec +4 -0
- data/bin/spec +4 -0
- data/examples/failing/README.txt +7 -0
- data/examples/failing/diffing_spec.rb +36 -0
- data/examples/failing/failing_autogenerated_docstrings_example.rb +19 -0
- data/examples/failing/failure_in_after.rb +10 -0
- data/examples/failing/failure_in_before.rb +10 -0
- data/examples/failing/mocking_example.rb +40 -0
- data/examples/failing/mocking_with_flexmock.rb +26 -0
- data/examples/failing/mocking_with_mocha.rb +25 -0
- data/examples/failing/mocking_with_rr.rb +27 -0
- data/examples/failing/partial_mock_example.rb +20 -0
- data/examples/failing/predicate_example.rb +34 -0
- data/examples/failing/raising_example.rb +47 -0
- data/examples/failing/spec_helper.rb +3 -0
- data/examples/failing/syntax_error_example.rb +7 -0
- data/examples/failing/team_spec.rb +44 -0
- data/examples/failing/timeout_behaviour.rb +7 -0
- data/examples/passing/autogenerated_docstrings_example.rb +25 -0
- data/examples/passing/before_and_after_example.rb +40 -0
- data/examples/passing/behave_as_example.rb +45 -0
- data/examples/passing/custom_expectation_matchers.rb +54 -0
- data/examples/passing/custom_formatter.rb +12 -0
- data/examples/passing/dynamic_spec.rb +9 -0
- data/examples/passing/file_accessor.rb +19 -0
- data/examples/passing/file_accessor_spec.rb +38 -0
- data/examples/passing/greeter_spec.rb +31 -0
- data/examples/passing/helper_method_example.rb +14 -0
- data/examples/passing/io_processor.rb +8 -0
- data/examples/passing/io_processor_spec.rb +21 -0
- data/examples/passing/legacy_spec.rb +11 -0
- data/examples/passing/mocking_example.rb +27 -0
- data/examples/passing/multi_threaded_example_group_runner.rb +26 -0
- data/examples/passing/nested_classes_example.rb +36 -0
- data/examples/passing/partial_mock_example.rb +29 -0
- data/examples/passing/pending_example.rb +20 -0
- data/examples/passing/predicate_example.rb +27 -0
- data/examples/passing/priority.txt +1 -0
- data/examples/passing/shared_example_group_example.rb +81 -0
- data/examples/passing/shared_stack_examples.rb +36 -0
- data/examples/passing/simple_matcher_example.rb +31 -0
- data/examples/passing/spec_helper.rb +3 -0
- data/examples/passing/stack.rb +36 -0
- data/examples/passing/stack_spec.rb +64 -0
- data/examples/passing/stack_spec_with_nested_example_groups.rb +67 -0
- data/examples/passing/stubbing_example.rb +69 -0
- data/examples/passing/yielding_example.rb +33 -0
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +86 -0
- data/features/before_and_after_blocks/before_and_after_blocks.feature +168 -0
- data/features/example_groups/autogenerated_docstrings.feature +45 -0
- data/features/example_groups/example_group_with_should_methods.feature +17 -0
- data/features/example_groups/nested_groups.feature +17 -0
- data/features/example_groups/output.feature +20 -0
- data/features/interop/examples_and_tests_together.feature +31 -0
- data/features/interop/test_but_not_test_unit.feature +14 -0
- data/features/interop/test_case_with_should_methods.feature +17 -0
- data/features/mock_framework_integration/use_flexmock.feature +27 -0
- data/features/step_definitions/running_rspec.rb +54 -0
- data/features/support/env.rb +26 -0
- data/features/support/helpers/cmdline.rb +9 -0
- data/features/support/matchers/smart_match.rb +37 -0
- data/init.rb +9 -0
- data/lib/adapters/mock_frameworks/flexmock.rb +24 -0
- data/lib/adapters/mock_frameworks/mocha.rb +20 -0
- data/lib/adapters/mock_frameworks/rr.rb +22 -0
- data/lib/adapters/mock_frameworks/rspec.rb +20 -0
- data/lib/autotest/discover.rb +3 -0
- data/lib/autotest/rspec.rb +47 -0
- data/lib/spec/dsl/main.rb +87 -0
- data/lib/spec/dsl.rb +1 -0
- data/lib/spec/example/before_and_after_hooks.rb +99 -0
- data/lib/spec/example/errors.rb +30 -0
- data/lib/spec/example/example_group.rb +26 -0
- data/lib/spec/example/example_group_factory.rb +98 -0
- data/lib/spec/example/example_group_methods.rb +376 -0
- data/lib/spec/example/example_matcher.rb +44 -0
- data/lib/spec/example/example_methods.rb +137 -0
- data/lib/spec/example/module_reopening_fix.rb +21 -0
- data/lib/spec/example/pending.rb +18 -0
- data/lib/spec/example/shared_example_group.rb +59 -0
- data/lib/spec/example.rb +187 -0
- data/lib/spec/expectations/differs/default.rb +66 -0
- data/lib/spec/expectations/errors.rb +12 -0
- data/lib/spec/expectations/extensions/object.rb +63 -0
- data/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/lib/spec/expectations/extensions.rb +2 -0
- data/lib/spec/expectations/handler.rb +32 -0
- data/lib/spec/expectations.rb +60 -0
- data/lib/spec/interop/test/unit/autorunner.rb +6 -0
- data/lib/spec/interop/test/unit/testcase.rb +73 -0
- data/lib/spec/interop/test/unit/testresult.rb +6 -0
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
- data/lib/spec/interop/test.rb +12 -0
- data/lib/spec/matchers/be.rb +208 -0
- data/lib/spec/matchers/be_close.rb +21 -0
- data/lib/spec/matchers/change.rb +148 -0
- data/lib/spec/matchers/eql.rb +25 -0
- data/lib/spec/matchers/equal.rb +25 -0
- data/lib/spec/matchers/errors.rb +5 -0
- data/lib/spec/matchers/exist.rb +16 -0
- data/lib/spec/matchers/generated_descriptions.rb +48 -0
- data/lib/spec/matchers/has.rb +15 -0
- data/lib/spec/matchers/have.rb +150 -0
- data/lib/spec/matchers/include.rb +80 -0
- data/lib/spec/matchers/match.rb +22 -0
- data/lib/spec/matchers/match_array.rb +79 -0
- data/lib/spec/matchers/method_missing.rb +9 -0
- data/lib/spec/matchers/operator_matcher.rb +70 -0
- data/lib/spec/matchers/raise_error.rb +128 -0
- data/lib/spec/matchers/respond_to.rb +71 -0
- data/lib/spec/matchers/satisfy.rb +47 -0
- data/lib/spec/matchers/simple_matcher.rb +132 -0
- data/lib/spec/matchers/throw_symbol.rb +106 -0
- data/lib/spec/matchers/wrap_expectation.rb +55 -0
- data/lib/spec/matchers.rb +141 -0
- data/lib/spec/mocks/argument_expectation.rb +49 -0
- data/lib/spec/mocks/argument_matchers.rb +237 -0
- data/lib/spec/mocks/error_generator.rb +82 -0
- data/lib/spec/mocks/errors.rb +10 -0
- data/lib/spec/mocks/extensions/object.rb +3 -0
- data/lib/spec/mocks/extensions.rb +1 -0
- data/lib/spec/mocks/framework.rb +15 -0
- data/lib/spec/mocks/message_expectation.rb +331 -0
- data/lib/spec/mocks/methods.rb +51 -0
- data/lib/spec/mocks/mock.rb +55 -0
- data/lib/spec/mocks/order_group.rb +29 -0
- data/lib/spec/mocks/proxy.rb +230 -0
- data/lib/spec/mocks/space.rb +28 -0
- data/lib/spec/mocks/spec_methods.rb +55 -0
- data/lib/spec/mocks.rb +200 -0
- data/lib/spec/rake/spectask.rb +225 -0
- data/lib/spec/rake/verify_rcov.rb +52 -0
- data/lib/spec/ruby.rb +9 -0
- data/lib/spec/runner/backtrace_tweaker.rb +58 -0
- data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
- data/lib/spec/runner/command_line.rb +35 -0
- data/lib/spec/runner/configuration.rb +166 -0
- data/lib/spec/runner/drb_command_line.rb +20 -0
- data/lib/spec/runner/example_group_runner.rb +70 -0
- data/lib/spec/runner/formatter/base_formatter.rb +79 -0
- data/lib/spec/runner/formatter/base_text_formatter.rb +127 -0
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +27 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
- data/lib/spec/runner/formatter/html_formatter.rb +340 -0
- data/lib/spec/runner/formatter/nested_text_formatter.rb +65 -0
- data/lib/spec/runner/formatter/profile_formatter.rb +51 -0
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +34 -0
- data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
- data/lib/spec/runner/formatter/specdoc_formatter.rb +39 -0
- data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/spec/runner/heckle_runner.rb +74 -0
- data/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
- data/lib/spec/runner/option_parser.rb +204 -0
- data/lib/spec/runner/options.rb +320 -0
- data/lib/spec/runner/reporter.rb +167 -0
- data/lib/spec/runner/spec_parser.rb +73 -0
- data/lib/spec/runner.rb +88 -0
- data/lib/spec/version.rb +15 -0
- data/lib/spec.rb +7 -0
- data/resources/rake/examples.rake +7 -0
- data/resources/rake/examples_with_rcov.rake +9 -0
- data/resources/rake/failing_examples_with_html.rake +9 -0
- data/resources/rake/verify_rcov.rake +7 -0
- data/resources/spec/example_group_with_should_methods.rb +12 -0
- data/resources/spec/simple_spec.rb +8 -0
- data/resources/test/spec_and_test_together.rb +57 -0
- data/resources/test/spec_including_test_but_not_unit.rb +11 -0
- data/resources/test/test_case_with_should_methods.rb +30 -0
- data/rspec.gemspec +32 -0
- data/spec/README.jruby +15 -0
- data/spec/autotest/autotest_helper.rb +6 -0
- data/spec/autotest/autotest_matchers.rb +47 -0
- data/spec/autotest/discover_spec.rb +8 -0
- data/spec/autotest/failed_results_re_spec.rb +24 -0
- data/spec/autotest/rspec_spec.rb +114 -0
- data/spec/rspec_suite.rb +6 -0
- data/spec/ruby_forker.rb +13 -0
- data/spec/spec/dsl/main_spec.rb +88 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +49 -0
- data/spec/spec/example/example_group_factory_spec.rb +224 -0
- data/spec/spec/example/example_group_methods_spec.rb +653 -0
- data/spec/spec/example/example_group_spec.rb +661 -0
- data/spec/spec/example/example_matcher_spec.rb +79 -0
- data/spec/spec/example/example_methods_spec.rb +204 -0
- data/spec/spec/example/helper_method_spec.rb +24 -0
- data/spec/spec/example/nested_example_group_spec.rb +71 -0
- data/spec/spec/example/pending_module_spec.rb +139 -0
- data/spec/spec/example/predicate_matcher_spec.rb +21 -0
- data/spec/spec/example/shared_example_group_spec.rb +257 -0
- data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
- data/spec/spec/expectations/differs/default_spec.rb +127 -0
- data/spec/spec/expectations/extensions/object_spec.rb +45 -0
- data/spec/spec/expectations/fail_with_spec.rb +71 -0
- data/spec/spec/expectations/wrap_expectation_spec.rb +30 -0
- data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
- data/spec/spec/interop/test/unit/spec_spec.rb +48 -0
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
- data/spec/spec/interop/test/unit/testcase_spec.rb +49 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
- data/spec/spec/matchers/be_close_spec.rb +41 -0
- data/spec/spec/matchers/be_spec.rb +303 -0
- data/spec/spec/matchers/change_spec.rb +329 -0
- data/spec/spec/matchers/description_generation_spec.rb +172 -0
- data/spec/spec/matchers/eql_spec.rb +29 -0
- data/spec/spec/matchers/equal_spec.rb +29 -0
- data/spec/spec/matchers/exist_spec.rb +57 -0
- data/spec/spec/matchers/handler_spec.rb +111 -0
- data/spec/spec/matchers/has_spec.rb +63 -0
- data/spec/spec/matchers/have_spec.rb +399 -0
- data/spec/spec/matchers/include_spec.rb +88 -0
- data/spec/spec/matchers/match_array_spec.rb +83 -0
- data/spec/spec/matchers/match_spec.rb +37 -0
- data/spec/spec/matchers/matcher_methods_spec.rb +66 -0
- data/spec/spec/matchers/operator_matcher_spec.rb +191 -0
- data/spec/spec/matchers/raise_error_spec.rb +333 -0
- data/spec/spec/matchers/respond_to_spec.rb +116 -0
- data/spec/spec/matchers/satisfy_spec.rb +36 -0
- data/spec/spec/matchers/simple_matcher_spec.rb +93 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +96 -0
- data/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
- data/spec/spec/mocks/argument_expectation_spec.rb +23 -0
- data/spec/spec/mocks/at_least_spec.rb +97 -0
- data/spec/spec/mocks/at_most_spec.rb +93 -0
- data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
- data/spec/spec/mocks/bug_report_10263_spec.rb +24 -0
- data/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
- data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
- data/spec/spec/mocks/bug_report_496.rb +19 -0
- data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
- data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
- data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
- data/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
- data/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
- data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
- data/spec/spec/mocks/mock_ordering_spec.rb +84 -0
- data/spec/spec/mocks/mock_space_spec.rb +54 -0
- data/spec/spec/mocks/mock_spec.rb +579 -0
- data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
- data/spec/spec/mocks/null_object_mock_spec.rb +54 -0
- data/spec/spec/mocks/once_counts_spec.rb +53 -0
- data/spec/spec/mocks/options_hash_spec.rb +35 -0
- data/spec/spec/mocks/partial_mock_spec.rb +149 -0
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
- data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
- data/spec/spec/mocks/precise_counts_spec.rb +52 -0
- data/spec/spec/mocks/record_messages_spec.rb +26 -0
- data/spec/spec/mocks/stub_spec.rb +194 -0
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +14 -0
- data/spec/spec/mocks/twice_counts_spec.rb +67 -0
- data/spec/spec/package/bin_spec_spec.rb +22 -0
- data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
- data/spec/spec/runner/command_line_spec.rb +141 -0
- data/spec/spec/runner/configuration_spec.rb +301 -0
- data/spec/spec/runner/drb_command_line_spec.rb +97 -0
- data/spec/spec/runner/empty_file.txt +0 -0
- data/spec/spec/runner/example_group_runner_spec.rb +33 -0
- data/spec/spec/runner/examples.txt +2 -0
- data/spec/spec/runner/failed.txt +3 -0
- data/spec/spec/runner/formatter/base_formatter_spec.rb +23 -0
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +23 -0
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +387 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +381 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +379 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +379 -0
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +379 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +62 -0
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +318 -0
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +145 -0
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
- data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +104 -0
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +365 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +373 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +373 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +373 -0
- data/spec/spec/runner/heckle_runner_spec.rb +78 -0
- data/spec/spec/runner/heckler_spec.rb +20 -0
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
- data/spec/spec/runner/option_parser_spec.rb +396 -0
- data/spec/spec/runner/options_spec.rb +469 -0
- data/spec/spec/runner/output_one_time_fixture.rb +7 -0
- data/spec/spec/runner/output_one_time_fixture_runner.rb +8 -0
- data/spec/spec/runner/output_one_time_spec.rb +16 -0
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +62 -0
- data/spec/spec/runner/reporter_spec.rb +238 -0
- data/spec/spec/runner/resources/a_bar.rb +0 -0
- data/spec/spec/runner/resources/a_foo.rb +0 -0
- data/spec/spec/runner/resources/a_spec.rb +1 -0
- data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
- data/spec/spec/runner/resources/utf8_encoded.rb +7 -0
- data/spec/spec/runner/spec.opts +2 -0
- data/spec/spec/runner/spec_drb.opts +1 -0
- data/spec/spec/runner/spec_parser/spec_parser_fixture.rb +70 -0
- data/spec/spec/runner/spec_parser_spec.rb +91 -0
- data/spec/spec/runner/spec_spaced.opts +2 -0
- data/spec/spec/runner_spec.rb +11 -0
- data/spec/spec/spec_classes.rb +133 -0
- data/spec/spec/spec_spec.rb +21 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +107 -0
- metadata +388 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
|
|
6
|
+
describe "an expectation set on nil" do
|
|
7
|
+
|
|
8
|
+
it "should issue a warning with file and line number information" do
|
|
9
|
+
expected_warning = %r%An expectation of :foo was set on nil. Called from #{__FILE__}:#{__LINE__+3}(:in `block \(2 levels\) in <module:Mocks>')?. Use allow_message_expectations_on_nil to disable warnings.%
|
|
10
|
+
Kernel.should_receive(:warn).with(expected_warning)
|
|
11
|
+
|
|
12
|
+
nil.should_receive(:foo)
|
|
13
|
+
nil.foo
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should issue a warning when the expectation is negative" do
|
|
17
|
+
Kernel.should_receive(:warn)
|
|
18
|
+
|
|
19
|
+
nil.should_not_receive(:foo)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "should not issue a warning when expectations are set to be allowed" do
|
|
23
|
+
allow_message_expectations_on_nil
|
|
24
|
+
Kernel.should_not_receive(:warn)
|
|
25
|
+
|
|
26
|
+
nil.should_receive(:foo)
|
|
27
|
+
nil.should_not_receive(:bar)
|
|
28
|
+
nil.foo
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe "#allow_message_expectations_on_nil" do
|
|
34
|
+
|
|
35
|
+
it "should not effect subsequent examples" do
|
|
36
|
+
example_group = Class.new(::Spec::Example::ExampleGroupDouble)
|
|
37
|
+
example_group.it("when called in one example that doesn't end up setting an expectation on nil") do
|
|
38
|
+
allow_message_expectations_on_nil
|
|
39
|
+
end
|
|
40
|
+
example_group.it("should not effect the next exapmle ran") do
|
|
41
|
+
Kernel.should_receive(:warn)
|
|
42
|
+
nil.should_receive(:foo)
|
|
43
|
+
nil.foo
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
example_group.run(Spec::Runner.options).should be_true
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "a mock acting as a NullObject" do
|
|
6
|
+
before(:each) do
|
|
7
|
+
@mock = Mock.new("null_object", :null_object => true)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should allow explicit expectation" do
|
|
11
|
+
@mock.should_receive(:something)
|
|
12
|
+
@mock.something
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should fail verification when explicit exception not met" do
|
|
16
|
+
lambda do
|
|
17
|
+
@mock.should_receive(:something)
|
|
18
|
+
@mock.rspec_verify
|
|
19
|
+
end.should raise_error(MockExpectationError)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "should ignore unexpected methods" do
|
|
23
|
+
@mock.random_call("a", "d", "c")
|
|
24
|
+
@mock.rspec_verify
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should expected message with different args first" do
|
|
28
|
+
@mock.should_receive(:message).with(:expected_arg)
|
|
29
|
+
@mock.message(:unexpected_arg)
|
|
30
|
+
@mock.message(:expected_arg)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should expected message with different args second" do
|
|
34
|
+
@mock.should_receive(:message).with(:expected_arg)
|
|
35
|
+
@mock.message(:expected_arg)
|
|
36
|
+
@mock.message(:unexpected_arg)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe "#null_object?" do
|
|
41
|
+
it "should default to false" do
|
|
42
|
+
obj = mock('anything')
|
|
43
|
+
obj.should_not be_null_object
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
describe "#as_null_object" do
|
|
48
|
+
it "should set the object to null_object" do
|
|
49
|
+
obj = mock('anything').as_null_object
|
|
50
|
+
obj.should be_null_object
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
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
|
|
11
|
+
@mock.should_receive(:random_call).once.with("a", "b", "c")
|
|
12
|
+
lambda do
|
|
13
|
+
@mock.random_call("d", "e", "f")
|
|
14
|
+
end.should raise_error(MockExpectationError)
|
|
15
|
+
@mock.rspec_reset
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "once should fail when called twice" do
|
|
19
|
+
@mock.should_receive(:random_call).once
|
|
20
|
+
@mock.random_call
|
|
21
|
+
@mock.random_call
|
|
22
|
+
lambda do
|
|
23
|
+
@mock.rspec_verify
|
|
24
|
+
end.should raise_error(MockExpectationError)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "once should fail when not called" do
|
|
28
|
+
@mock.should_receive(:random_call).once
|
|
29
|
+
lambda do
|
|
30
|
+
@mock.rspec_verify
|
|
31
|
+
end.should raise_error(MockExpectationError)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "once should pass when called once" do
|
|
35
|
+
@mock.should_receive(:random_call).once
|
|
36
|
+
@mock.random_call
|
|
37
|
+
@mock.rspec_verify
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "once should pass when called once with specified args" do
|
|
41
|
+
@mock.should_receive(:random_call).once.with("a", "b", "c")
|
|
42
|
+
@mock.random_call("a", "b", "c")
|
|
43
|
+
@mock.rspec_verify
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "once should pass when called once with unspecified args" do
|
|
47
|
+
@mock.should_receive(:random_call).once
|
|
48
|
+
@mock.random_call("a", "b", "c")
|
|
49
|
+
@mock.rspec_verify
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "calling :should_receive with an options hash" do
|
|
6
|
+
it "should report the file and line submitted with :expected_from" do
|
|
7
|
+
begin
|
|
8
|
+
mock = Spec::Mocks::Mock.new("a mock")
|
|
9
|
+
mock.should_receive(:message, :expected_from => "/path/to/blah.ext:37")
|
|
10
|
+
mock.rspec_verify
|
|
11
|
+
rescue => e
|
|
12
|
+
ensure
|
|
13
|
+
e.backtrace.to_s.should =~ /\/path\/to\/blah.ext:37/m
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should use the message supplied with :message" do
|
|
18
|
+
lambda {
|
|
19
|
+
m = Spec::Mocks::Mock.new("a mock")
|
|
20
|
+
m.should_receive(:message, :message => "recebi nada")
|
|
21
|
+
m.rspec_verify
|
|
22
|
+
}.should raise_error("recebi nada")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should use the message supplied with :message after a similar stub" do
|
|
26
|
+
lambda {
|
|
27
|
+
m = Spec::Mocks::Mock.new("a mock")
|
|
28
|
+
m.stub!(:message)
|
|
29
|
+
m.should_receive(:message, :message => "from mock")
|
|
30
|
+
m.rspec_verify
|
|
31
|
+
}.should raise_error("from mock")
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "using a Partial Mock," do
|
|
6
|
+
before(:each) do
|
|
7
|
+
@object = Object.new
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should name the class in the failure message" do
|
|
11
|
+
@object.should_receive(:foo)
|
|
12
|
+
lambda do
|
|
13
|
+
@object.rspec_verify
|
|
14
|
+
end.should raise_error(Spec::Mocks::MockExpectationError, /<Object:.*> expected/)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should name the class in the failure message when expectation is on class" do
|
|
18
|
+
Object.should_receive(:foo)
|
|
19
|
+
lambda do
|
|
20
|
+
Object.rspec_verify
|
|
21
|
+
end.should raise_error(Spec::Mocks::MockExpectationError, /<Object \(class\)>/)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should not conflict with @options in the object" do
|
|
25
|
+
@object.instance_eval { @options = Object.new }
|
|
26
|
+
@object.should_receive(:blah)
|
|
27
|
+
@object.blah
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "should_not_receive should mock out the method" do
|
|
31
|
+
@object.should_not_receive(:fuhbar)
|
|
32
|
+
lambda do
|
|
33
|
+
@object.fuhbar
|
|
34
|
+
end.should raise_error(MockExpectationError, /<Object:.*> expected :fuhbar with \(no args\) 0 times/)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "should_not_receive should return a negative message expectation" do
|
|
38
|
+
@object.should_not_receive(:foobar).should be_kind_of(NegativeMessageExpectation)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "should_receive should mock out the method" do
|
|
42
|
+
@object.should_receive(:foobar).with(:test_param).and_return(1)
|
|
43
|
+
@object.foobar(:test_param).should equal(1)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "should_receive should handle a hash" do
|
|
47
|
+
@object.should_receive(:foobar).with(:key => "value").and_return(1)
|
|
48
|
+
@object.foobar(:key => "value").should equal(1)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "should_receive should handle an inner hash" do
|
|
52
|
+
hash = {:a => {:key => "value"}}
|
|
53
|
+
@object.should_receive(:foobar).with(:key => "value").and_return(1)
|
|
54
|
+
@object.foobar(hash[:a]).should equal(1)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "should_receive should return a message expectation" do
|
|
58
|
+
@object.should_receive(:foobar).should be_kind_of(MessageExpectation)
|
|
59
|
+
@object.foobar
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "should_receive should verify method was called" do
|
|
63
|
+
@object.should_receive(:foobar).with(:test_param).and_return(1)
|
|
64
|
+
lambda do
|
|
65
|
+
@object.rspec_verify
|
|
66
|
+
end.should raise_error(Spec::Mocks::MockExpectationError)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "should_receive should also take a String argument" do
|
|
70
|
+
@object.should_receive('foobar')
|
|
71
|
+
@object.foobar
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "should_not_receive should also take a String argument" do
|
|
75
|
+
@object.should_not_receive('foobar')
|
|
76
|
+
lambda do
|
|
77
|
+
@object.foobar
|
|
78
|
+
end.should raise_error(Spec::Mocks::MockExpectationError)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "should use report nil in the error message" do
|
|
82
|
+
allow_message_expectations_on_nil
|
|
83
|
+
|
|
84
|
+
@this_will_resolve_to_nil.should_receive(:foobar)
|
|
85
|
+
lambda do
|
|
86
|
+
@this_will_resolve_to_nil.rspec_verify
|
|
87
|
+
end.should raise_error(Spec::Mocks::MockExpectationError, /nil expected :foobar with/)
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
describe "Partially mocking an object that defines ==, after another mock has been defined" do
|
|
92
|
+
before(:each) do
|
|
93
|
+
stub("existing mock", :foo => :foo)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
class PartiallyMockedEquals
|
|
97
|
+
attr_reader :val
|
|
98
|
+
def initialize(val)
|
|
99
|
+
@val = val
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def ==(other)
|
|
103
|
+
@val == other.val
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "should not raise an error when stubbing the object" do
|
|
108
|
+
o = PartiallyMockedEquals.new :foo
|
|
109
|
+
lambda { o.stub!(:bar) }.should_not raise_error(NoMethodError)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
describe "Method visibility when using partial mocks" do
|
|
114
|
+
class MockableClass
|
|
115
|
+
def public_method
|
|
116
|
+
private_method
|
|
117
|
+
protected_method
|
|
118
|
+
end
|
|
119
|
+
protected
|
|
120
|
+
def protected_method; end
|
|
121
|
+
private
|
|
122
|
+
def private_method; end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
before(:each) do
|
|
126
|
+
@object = MockableClass.new
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it 'should keep public methods public' do
|
|
130
|
+
@object.should_receive(:public_method)
|
|
131
|
+
@object.public_methods.should include('public_method')
|
|
132
|
+
@object.public_method
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it 'should keep private methods private' do
|
|
136
|
+
@object.should_receive(:private_method)
|
|
137
|
+
@object.private_methods.should include('private_method')
|
|
138
|
+
@object.public_method
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
it 'should keep protected methods protected' do
|
|
142
|
+
@object.should_receive(:protected_method)
|
|
143
|
+
@object.protected_methods.should include('protected_method')
|
|
144
|
+
@object.public_method
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "PartialMockUsingMocksDirectly" do
|
|
6
|
+
before(:each) do
|
|
7
|
+
|
|
8
|
+
klass=Class.new
|
|
9
|
+
klass.class_eval do
|
|
10
|
+
def existing_method
|
|
11
|
+
:original_value
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
@obj = klass.new
|
|
15
|
+
|
|
16
|
+
end
|
|
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
|
|
29
|
+
@obj.should_receive(:msg)
|
|
30
|
+
lambda do
|
|
31
|
+
@obj.rspec_verify
|
|
32
|
+
end.should raise_error(MockExpectationError)
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
it "should fail when message is received with incorrect args" do
|
|
36
|
+
@obj.should_receive(:msg).with(:correct_arg)
|
|
37
|
+
lambda do
|
|
38
|
+
@obj.msg(:incorrect_arg)
|
|
39
|
+
end.should raise_error(MockExpectationError)
|
|
40
|
+
@obj.msg(:correct_arg)
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
it "should pass when expected message is received" do
|
|
44
|
+
@obj.should_receive(:msg)
|
|
45
|
+
@obj.msg
|
|
46
|
+
@obj.rspec_verify
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
it "should pass when message is received with correct args" do
|
|
50
|
+
@obj.should_receive(:msg).with(:correct_arg)
|
|
51
|
+
@obj.msg(:correct_arg)
|
|
52
|
+
@obj.rspec_verify
|
|
53
|
+
|
|
54
|
+
end
|
|
55
|
+
it "should revert to original method if existed" do
|
|
56
|
+
@obj.existing_method.should equal(:original_value)
|
|
57
|
+
@obj.should_receive(:existing_method).and_return(:mock_value)
|
|
58
|
+
@obj.existing_method.should equal(:mock_value)
|
|
59
|
+
@obj.rspec_verify
|
|
60
|
+
@obj.existing_method.should equal(:original_value)
|
|
61
|
+
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "mock argument matchers", :shared => true do
|
|
6
|
+
before(:each) do
|
|
7
|
+
@mock = Mock.new("test mock")
|
|
8
|
+
Kernel.stub!(:warn)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
after(:each) do
|
|
12
|
+
@mock.rspec_verify
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe Methods, "handling argument matchers" do
|
|
17
|
+
it_should_behave_like "mock argument matchers"
|
|
18
|
+
|
|
19
|
+
it "should accept true as boolean()" do
|
|
20
|
+
@mock.should_receive(:random_call).with(boolean())
|
|
21
|
+
@mock.random_call(true)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should accept false as boolean()" do
|
|
25
|
+
@mock.should_receive(:random_call).with(boolean())
|
|
26
|
+
@mock.random_call(false)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should accept fixnum as kind_of(Numeric)" do
|
|
30
|
+
@mock.should_receive(:random_call).with(kind_of(Numeric))
|
|
31
|
+
@mock.random_call(1)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should accept float as an_instance_of(Numeric)" do
|
|
35
|
+
@mock.should_receive(:random_call).with(kind_of(Numeric))
|
|
36
|
+
@mock.random_call(1.5)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "accepts fixnum as instance_of(Fixnum)" do
|
|
40
|
+
@mock.should_receive(:random_call).with(instance_of(Fixnum))
|
|
41
|
+
@mock.random_call(1)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should NOT accept fixnum as instance_of(Numeric)" do
|
|
45
|
+
@mock.should_not_receive(:random_call).with(instance_of(Numeric))
|
|
46
|
+
@mock.random_call(1)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should NOT accept float as instance_of(Numeric)" do
|
|
50
|
+
@mock.should_not_receive(:random_call).with(instance_of(Numeric))
|
|
51
|
+
@mock.random_call(1.5)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "should accept string as anything()" do
|
|
55
|
+
@mock.should_receive(:random_call).with("a", anything(), "c")
|
|
56
|
+
@mock.random_call("a", "whatever", "c")
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "should match duck type with one method" do
|
|
60
|
+
@mock.should_receive(:random_call).with(duck_type(:length))
|
|
61
|
+
@mock.random_call([])
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "should match duck type with two methods" do
|
|
65
|
+
@mock.should_receive(:random_call).with(duck_type(:abs, :div))
|
|
66
|
+
@mock.random_call(1)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "should match no args against any_args()" do
|
|
70
|
+
@mock.should_receive(:random_call).with(any_args)
|
|
71
|
+
@mock.random_call()
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "should match one arg against any_args()" do
|
|
75
|
+
@mock.should_receive(:random_call).with(any_args)
|
|
76
|
+
@mock.random_call("a string")
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it "should match no args against no_args()" do
|
|
80
|
+
@mock.should_receive(:random_call).with(no_args)
|
|
81
|
+
@mock.random_call()
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "should match hash with hash_including same hash" do
|
|
85
|
+
@mock.should_receive(:random_call).with(hash_including(:a => 1))
|
|
86
|
+
@mock.random_call(:a => 1)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
describe Methods, "handling block matchers" do
|
|
92
|
+
it_should_behave_like "mock argument matchers"
|
|
93
|
+
|
|
94
|
+
it "should match arguments against RSpec expectations" do
|
|
95
|
+
@mock.should_receive(:random_call).with {|arg1, arg2, arr, *rest|
|
|
96
|
+
arg1.should == 5
|
|
97
|
+
arg2.should have_at_least(3).characters
|
|
98
|
+
arg2.should have_at_most(10).characters
|
|
99
|
+
arr.map {|i| i * 2}.should == [2,4,6]
|
|
100
|
+
rest.should == [:fee, "fi", 4]
|
|
101
|
+
}
|
|
102
|
+
@mock.random_call 5, "hello", [1,2,3], :fee, "fi", 4
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
describe Methods, "handling non-matcher arguments" do
|
|
107
|
+
|
|
108
|
+
before(:each) do
|
|
109
|
+
@mock = Mock.new("test mock")
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "should match non special symbol (can be removed when deprecated symbols are removed)" do
|
|
113
|
+
@mock.should_receive(:random_call).with(:some_symbol)
|
|
114
|
+
@mock.random_call(:some_symbol)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
it "should match string against regexp" do
|
|
118
|
+
@mock.should_receive(:random_call).with(/bcd/)
|
|
119
|
+
@mock.random_call("abcde")
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
it "should match regexp against regexp" do
|
|
123
|
+
@mock.should_receive(:random_call).with(/bcd/)
|
|
124
|
+
@mock.random_call(/bcd/)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
it "should match against a hash submitted and received by value" do
|
|
128
|
+
@mock.should_receive(:random_call).with(:a => "a", :b => "b")
|
|
129
|
+
@mock.random_call(:a => "a", :b => "b")
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
it "should match against a hash submitted by reference and received by value" do
|
|
133
|
+
opts = {:a => "a", :b => "b"}
|
|
134
|
+
@mock.should_receive(:random_call).with(opts)
|
|
135
|
+
@mock.random_call(:a => "a", :b => "b")
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
it "should match against a hash submitted by value and received by reference" do
|
|
139
|
+
opts = {:a => "a", :b => "b"}
|
|
140
|
+
@mock.should_receive(:random_call).with(:a => "a", :b => "b")
|
|
141
|
+
@mock.random_call(opts)
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
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
|
|
11
|
+
@mock.should_receive(:random_call).exactly(3).times
|
|
12
|
+
@mock.random_call
|
|
13
|
+
@mock.random_call
|
|
14
|
+
lambda do
|
|
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
|
|
20
|
+
@mock.should_receive(:random_call).exactly(3).times
|
|
21
|
+
lambda do
|
|
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
|
|
27
|
+
@mock.should_receive(:random_call).exactly(3).times
|
|
28
|
+
@mock.random_call
|
|
29
|
+
@mock.random_call
|
|
30
|
+
@mock.random_call
|
|
31
|
+
@mock.rspec_verify
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should pass multiple calls with different args and counts" do
|
|
35
|
+
@mock.should_receive(:random_call).twice.with(1)
|
|
36
|
+
@mock.should_receive(:random_call).once.with(2)
|
|
37
|
+
@mock.random_call(1)
|
|
38
|
+
@mock.random_call(2)
|
|
39
|
+
@mock.random_call(1)
|
|
40
|
+
@mock.rspec_verify
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "should pass mutiple calls with different args" do
|
|
44
|
+
@mock.should_receive(:random_call).once.with(1)
|
|
45
|
+
@mock.should_receive(:random_call).once.with(2)
|
|
46
|
+
@mock.random_call(1)
|
|
47
|
+
@mock.random_call(2)
|
|
48
|
+
@mock.rspec_verify
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "a mock" do
|
|
6
|
+
before(:each) do
|
|
7
|
+
@mock = mock("mock", :null_object => true)
|
|
8
|
+
end
|
|
9
|
+
it "should answer false for received_message? when no messages received" do
|
|
10
|
+
@mock.received_message?(:message).should be_false
|
|
11
|
+
end
|
|
12
|
+
it "should answer true for received_message? when message received" do
|
|
13
|
+
@mock.message
|
|
14
|
+
@mock.received_message?(:message).should be_true
|
|
15
|
+
end
|
|
16
|
+
it "should answer true for received_message? when message received with correct args" do
|
|
17
|
+
@mock.message 1,2,3
|
|
18
|
+
@mock.received_message?(:message, 1,2,3).should be_true
|
|
19
|
+
end
|
|
20
|
+
it "should answer false for received_message? when message received with incorrect args" do
|
|
21
|
+
@mock.message 1,2,3
|
|
22
|
+
@mock.received_message?(:message, 1,2).should be_false
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|