mocha 0.10.5 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYING.rdoc +1 -1
- data/README.rdoc +6 -4
- data/RELEASE.rdoc +12 -0
- data/Rakefile +29 -60
- data/doc/Mocha.html +112 -0
- data/doc/Mocha/API.html +898 -0
- data/doc/Mocha/ClassMethods.html +246 -0
- data/doc/Mocha/Configuration.html +471 -0
- data/doc/Mocha/Expectation.html +2570 -0
- data/doc/Mocha/Mock.html +830 -0
- data/doc/Mocha/ObjectMethods.html +668 -0
- data/doc/Mocha/ParameterMatchers.html +2715 -0
- data/doc/Mocha/ParameterMatchers/AllOf.html +137 -0
- data/doc/Mocha/ParameterMatchers/AnyOf.html +137 -0
- data/doc/Mocha/ParameterMatchers/AnyParameters.html +136 -0
- data/doc/Mocha/ParameterMatchers/Anything.html +136 -0
- data/doc/Mocha/ParameterMatchers/Base.html +419 -0
- data/doc/Mocha/ParameterMatchers/Equals.html +137 -0
- data/doc/Mocha/ParameterMatchers/HasEntries.html +137 -0
- data/doc/Mocha/ParameterMatchers/HasEntry.html +137 -0
- data/doc/Mocha/ParameterMatchers/HasKey.html +137 -0
- data/doc/Mocha/ParameterMatchers/HasValue.html +137 -0
- data/doc/Mocha/ParameterMatchers/Includes.html +137 -0
- data/doc/Mocha/ParameterMatchers/InstanceOf.html +137 -0
- data/doc/Mocha/ParameterMatchers/IsA.html +136 -0
- data/doc/Mocha/ParameterMatchers/KindOf.html +137 -0
- data/doc/Mocha/ParameterMatchers/Not.html +137 -0
- data/doc/Mocha/ParameterMatchers/Optionally.html +136 -0
- data/doc/Mocha/ParameterMatchers/QueryStringMatches.html +136 -0
- data/doc/Mocha/ParameterMatchers/RegexpMatches.html +137 -0
- data/doc/Mocha/ParameterMatchers/RespondsWith.html +137 -0
- data/doc/Mocha/ParameterMatchers/YamlEquivalent.html +137 -0
- data/doc/Mocha/Sequence.html +133 -0
- data/doc/Mocha/StateMachine.html +510 -0
- data/doc/Mocha/StateMachine/State.html +125 -0
- data/doc/Mocha/StateMachine/StatePredicate.html +125 -0
- data/doc/Mocha/StubbingError.html +134 -0
- data/doc/Mocha/UnexpectedInvocation.html +124 -0
- data/doc/_index.html +481 -0
- data/doc/class_list.html +47 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +55 -0
- data/doc/css/style.css +322 -0
- data/doc/file.COPYING.html +72 -0
- data/doc/file.MIT-LICENSE.html +86 -0
- data/doc/file.README.html +153 -0
- data/doc/file.RELEASE.html +933 -0
- data/doc/file.misc.html +108 -0
- data/doc/file.mocha.html +90 -0
- data/doc/file.stubba.html +129 -0
- data/doc/file_list.html +67 -0
- data/doc/frames.html +13 -0
- data/doc/index.html +153 -0
- data/doc/js/app.js +205 -0
- data/doc/js/full_list.js +173 -0
- data/doc/js/jquery.js +16 -0
- data/doc/method_list.html +510 -0
- data/doc/top-level-namespace.html +105 -0
- data/lib/mocha/any_instance_method.rb +16 -11
- data/lib/mocha/api.rb +120 -106
- data/lib/mocha/argument_iterator.rb +6 -6
- data/lib/mocha/backtrace_filter.rb +1 -1
- data/lib/mocha/cardinality.rb +21 -21
- data/lib/mocha/central.rb +8 -8
- data/lib/mocha/change_state_side_effect.rb +5 -5
- data/lib/mocha/class_method.rb +14 -19
- data/lib/mocha/configuration.rb +47 -37
- data/lib/mocha/deprecation.rb +8 -8
- data/lib/mocha/exception_raiser.rb +7 -7
- data/lib/mocha/expectation.rb +173 -77
- data/lib/mocha/expectation_error.rb +2 -2
- data/lib/mocha/expectation_list.rb +11 -11
- data/lib/mocha/in_state_ordering_constraint.rb +5 -5
- data/lib/mocha/inspect.rb +8 -8
- data/lib/mocha/instance_method.rb +1 -17
- data/lib/mocha/integration.rb +9 -9
- data/lib/mocha/integration/mini_test/assertion_counter.rb +9 -9
- data/lib/mocha/integration/mini_test/exception_translation.rb +6 -6
- data/lib/mocha/integration/mini_test/version_13.rb +6 -6
- data/lib/mocha/integration/mini_test/version_140.rb +6 -6
- data/lib/mocha/integration/mini_test/version_141.rb +6 -6
- data/lib/mocha/integration/mini_test/version_142_to_172.rb +7 -7
- data/lib/mocha/integration/mini_test/version_200.rb +7 -7
- data/lib/mocha/integration/test_unit/assertion_counter.rb +10 -10
- data/lib/mocha/integration/test_unit/gem_version_200.rb +6 -6
- data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +6 -6
- data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +6 -6
- data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +6 -6
- data/lib/mocha/is_a.rb +1 -1
- data/lib/mocha/logger.rb +6 -6
- data/lib/mocha/method_matcher.rb +7 -7
- data/lib/mocha/mock.rb +85 -48
- data/lib/mocha/mockery.rb +47 -33
- data/lib/mocha/module_method.rb +2 -2
- data/lib/mocha/multiple_yields.rb +9 -9
- data/lib/mocha/names.rb +18 -18
- data/lib/mocha/no_yields.rb +7 -7
- data/lib/mocha/object.rb +104 -75
- data/lib/mocha/parameter_matchers.rb +3 -3
- data/lib/mocha/parameter_matchers/all_of.rb +22 -12
- data/lib/mocha/parameter_matchers/any_of.rb +23 -12
- data/lib/mocha/parameter_matchers/any_parameters.rb +15 -8
- data/lib/mocha/parameter_matchers/anything.rb +20 -11
- data/lib/mocha/parameter_matchers/base.rb +35 -27
- data/lib/mocha/parameter_matchers/equals.rb +23 -12
- data/lib/mocha/parameter_matchers/has_entries.rb +22 -12
- data/lib/mocha/parameter_matchers/has_entry.rb +31 -13
- data/lib/mocha/parameter_matchers/has_key.rb +21 -11
- data/lib/mocha/parameter_matchers/has_value.rb +21 -11
- data/lib/mocha/parameter_matchers/includes.rb +15 -5
- data/lib/mocha/parameter_matchers/instance_of.rb +23 -12
- data/lib/mocha/parameter_matchers/is_a.rb +23 -12
- data/lib/mocha/parameter_matchers/kind_of.rb +23 -12
- data/lib/mocha/parameter_matchers/not.rb +22 -12
- data/lib/mocha/parameter_matchers/object.rb +5 -3
- data/lib/mocha/parameter_matchers/optionally.rb +24 -12
- data/lib/mocha/parameter_matchers/query_string.rb +14 -3
- data/lib/mocha/parameter_matchers/regexp_matches.rb +21 -11
- data/lib/mocha/parameter_matchers/responds_with.rb +17 -6
- data/lib/mocha/parameter_matchers/yaml_equivalent.rb +16 -6
- data/lib/mocha/parameters_matcher.rb +8 -8
- data/lib/mocha/pretty_parameters.rb +7 -7
- data/lib/mocha/return_values.rb +11 -11
- data/lib/mocha/sequence.rb +23 -14
- data/lib/mocha/single_return_value.rb +7 -7
- data/lib/mocha/single_yield.rb +9 -9
- data/lib/mocha/standalone.rb +1 -1
- data/lib/mocha/state_machine.rb +61 -46
- data/lib/mocha/stubbing_error.rb +8 -5
- data/lib/mocha/thrower.rb +2 -2
- data/lib/mocha/unexpected_invocation.rb +9 -6
- data/lib/mocha/version.rb +1 -1
- data/lib/mocha/yield_parameters.rb +10 -10
- data/lib/mocha_standalone.rb +1 -1
- data/mocha.gemspec +4 -7
- data/test/acceptance/acceptance_test_helper.rb +10 -10
- data/test/acceptance/api_test.rb +20 -20
- data/test/acceptance/bug_18914_test.rb +12 -12
- data/test/acceptance/bug_21465_test.rb +6 -6
- data/test/acceptance/bug_21563_test.rb +5 -5
- data/test/acceptance/exception_rescue_test.rb +1 -1
- data/test/acceptance/expected_invocation_count_test.rb +17 -17
- data/test/acceptance/failure_messages_test.rb +13 -13
- data/test/acceptance/minitest_test.rb +39 -39
- data/test/acceptance/mocha_example_test.rb +26 -26
- data/test/acceptance/mocha_test_result_test.rb +13 -13
- data/test/acceptance/mock_test.rb +5 -5
- data/test/acceptance/mock_with_initializer_block_test.rb +5 -5
- data/test/acceptance/mocked_methods_dispatch_test.rb +4 -4
- data/test/acceptance/multiple_expectations_failure_message_test.rb +2 -2
- data/test/acceptance/optional_parameters_test.rb +5 -5
- data/test/acceptance/parameter_matcher_test.rb +18 -18
- data/test/acceptance/partial_mocks_test.rb +9 -9
- data/test/acceptance/raise_exception_test.rb +1 -1
- data/test/acceptance/return_value_test.rb +5 -5
- data/test/acceptance/sequence_test.rb +29 -29
- data/test/acceptance/states_test.rb +17 -17
- data/test/acceptance/stub_any_instance_method_test.rb +13 -13
- data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +7 -7
- data/test/acceptance/stub_everything_test.rb +5 -5
- data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +1 -1
- data/test/acceptance/stub_module_method_test.rb +17 -17
- data/test/acceptance/stub_test.rb +5 -5
- data/test/acceptance/stubba_example_test.rb +24 -24
- data/test/acceptance/stubba_test_result_test.rb +11 -11
- data/test/acceptance/stubbing_error_backtrace_test.rb +6 -6
- data/test/acceptance/stubbing_frozen_object_test.rb +88 -0
- data/test/acceptance/stubbing_method_unnecessarily_test.rb +9 -9
- data/test/acceptance/stubbing_nil_test.rb +59 -0
- data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +13 -13
- data/test/acceptance/stubbing_non_existent_class_method_test.rb +15 -15
- data/test/acceptance/stubbing_non_existent_instance_method_test.rb +14 -14
- data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +13 -13
- data/test/acceptance/stubbing_non_public_class_method_test.rb +12 -12
- data/test/acceptance/stubbing_non_public_instance_method_test.rb +12 -12
- data/test/acceptance/stubbing_on_non_mock_object_test.rb +9 -9
- data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +35 -0
- data/test/acceptance/throw_test.rb +1 -1
- data/test/deprecation_disabler.rb +1 -1
- data/test/execution_point.rb +7 -7
- data/test/method_definer.rb +1 -1
- data/test/mini_test_result.rb +21 -21
- data/test/simple_counter.rb +5 -5
- data/test/test_helper.rb +1 -1
- data/test/test_runner.rb +22 -24
- data/test/test_unit_result.rb +20 -0
- data/test/unit/any_instance_method_test.rb +28 -32
- data/test/unit/array_inspect_test.rb +3 -3
- data/test/unit/backtrace_filter_test.rb +3 -3
- data/test/unit/cardinality_test.rb +12 -12
- data/test/unit/central_test.rb +18 -18
- data/test/unit/change_state_side_effect_test.rb +12 -12
- data/test/unit/class_method_test.rb +33 -91
- data/test/unit/date_time_inspect_test.rb +4 -4
- data/test/unit/exception_raiser_test.rb +5 -5
- data/test/unit/expectation_list_test.rb +7 -7
- data/test/unit/expectation_test.rb +66 -66
- data/test/unit/hash_inspect_test.rb +4 -4
- data/test/unit/in_state_ordering_constraint_test.rb +13 -13
- data/test/unit/method_matcher_test.rb +3 -3
- data/test/unit/mock_test.rb +40 -40
- data/test/unit/mockery_test.rb +25 -25
- data/test/unit/multiple_yields_test.rb +2 -2
- data/test/unit/no_yields_test.rb +2 -2
- data/test/unit/object_inspect_test.rb +4 -4
- data/test/unit/object_test.rb +15 -15
- data/test/unit/parameter_matchers/all_of_test.rb +6 -6
- data/test/unit/parameter_matchers/any_of_test.rb +6 -6
- data/test/unit/parameter_matchers/anything_test.rb +5 -5
- data/test/unit/parameter_matchers/has_entries_test.rb +10 -10
- data/test/unit/parameter_matchers/has_entry_test.rb +13 -13
- data/test/unit/parameter_matchers/has_key_test.rb +11 -11
- data/test/unit/parameter_matchers/has_value_test.rb +12 -12
- data/test/unit/parameter_matchers/includes_test.rb +4 -4
- data/test/unit/parameter_matchers/not_test.rb +6 -6
- data/test/unit/parameter_matchers/regexp_matches_test.rb +9 -9
- data/test/unit/parameter_matchers/responds_with_test.rb +6 -6
- data/test/unit/parameter_matchers/stub_matcher.rb +4 -4
- data/test/unit/parameter_matchers/yaml_equivalent_test.rb +6 -6
- data/test/unit/parameters_matcher_test.rb +16 -16
- data/test/unit/return_values_test.rb +5 -5
- data/test/unit/sequence_test.rb +10 -10
- data/test/unit/single_return_value_test.rb +3 -3
- data/test/unit/single_yield_test.rb +2 -2
- data/test/unit/state_machine_test.rb +19 -19
- data/test/unit/string_inspect_test.rb +2 -2
- data/test/unit/thrower_test.rb +1 -1
- data/test/unit/yield_parameters_test.rb +11 -11
- metadata +113 -101
@@ -0,0 +1,86 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
6
|
+
<title>
|
7
|
+
File: MIT-LICENSE
|
8
|
+
|
9
|
+
— Mocha 0.11.0
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
16
|
+
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
relpath = '';
|
19
|
+
if (relpath != '') relpath += '/';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
23
|
+
|
24
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
25
|
+
|
26
|
+
|
27
|
+
</head>
|
28
|
+
<body>
|
29
|
+
<script type="text/javascript" charset="utf-8">
|
30
|
+
if (window.top.frames.main) document.body.className = 'frames';
|
31
|
+
</script>
|
32
|
+
|
33
|
+
<div id="header">
|
34
|
+
<div id="menu">
|
35
|
+
|
36
|
+
<a href="_index.html" title="Index">Index</a> »
|
37
|
+
<span class="title">File: MIT-LICENSE</span>
|
38
|
+
|
39
|
+
|
40
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<div id="search">
|
44
|
+
|
45
|
+
<a id="class_list_link" href="#">Class List</a>
|
46
|
+
|
47
|
+
<a id="method_list_link" href="#">Method List</a>
|
48
|
+
|
49
|
+
<a id="file_list_link" href="#">File List</a>
|
50
|
+
|
51
|
+
</div>
|
52
|
+
<div class="clear"></div>
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<iframe id="search_frame"></iframe>
|
56
|
+
|
57
|
+
<div id="content"><div id='filecontents'>
|
58
|
+
<p>Copyright © 2006 Revieworld Ltd.</p>
|
59
|
+
|
60
|
+
<p>Permission is hereby granted, free of charge, to any person obtaining a
|
61
|
+
copy of this software and associated documentation files (the “Software”),
|
62
|
+
to deal in the Software without restriction, including without limitation
|
63
|
+
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
64
|
+
and/or sell copies of the Software, and to permit persons to whom the
|
65
|
+
Software is furnished to do so, subject to the following conditions:</p>
|
66
|
+
|
67
|
+
<p>The above copyright notice and this permission notice shall be included in
|
68
|
+
all copies or substantial portions of the Software.</p>
|
69
|
+
|
70
|
+
<p>THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
71
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
72
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
73
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
74
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
75
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
76
|
+
DEALINGS IN THE SOFTWARE.</p>
|
77
|
+
</div></div>
|
78
|
+
|
79
|
+
<div id="footer">
|
80
|
+
Generated on Thu Apr 19 10:54:34 2012 by
|
81
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
82
|
+
0.7.5 (ruby-1.9.3).
|
83
|
+
</div>
|
84
|
+
|
85
|
+
</body>
|
86
|
+
</html>
|
@@ -0,0 +1,153 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
6
|
+
<title>
|
7
|
+
File: README
|
8
|
+
|
9
|
+
— Mocha 0.11.0
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
16
|
+
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
relpath = '';
|
19
|
+
if (relpath != '') relpath += '/';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
23
|
+
|
24
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
25
|
+
|
26
|
+
|
27
|
+
</head>
|
28
|
+
<body>
|
29
|
+
<script type="text/javascript" charset="utf-8">
|
30
|
+
if (window.top.frames.main) document.body.className = 'frames';
|
31
|
+
</script>
|
32
|
+
|
33
|
+
<div id="header">
|
34
|
+
<div id="menu">
|
35
|
+
|
36
|
+
<a href="_index.html" title="Index">Index</a> »
|
37
|
+
<span class="title">File: README</span>
|
38
|
+
|
39
|
+
|
40
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<div id="search">
|
44
|
+
|
45
|
+
<a id="class_list_link" href="#">Class List</a>
|
46
|
+
|
47
|
+
<a id="method_list_link" href="#">Method List</a>
|
48
|
+
|
49
|
+
<a id="file_list_link" href="#">File List</a>
|
50
|
+
|
51
|
+
</div>
|
52
|
+
<div class="clear"></div>
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<iframe id="search_frame"></iframe>
|
56
|
+
|
57
|
+
<div id="content"><div id='filecontents'>
|
58
|
+
<h1>Mocha <a href="http://travis-ci.org/floehopper/mocha"><img src="https://secure.travis-ci.org/floehopper/mocha.png" /></a></h1>
|
59
|
+
|
60
|
+
<p>Mocha is a library for mocking and stubbing using a syntax like that of <a
|
61
|
+
href="http://www.jmock.org">JMock</a>.</p>
|
62
|
+
|
63
|
+
<p>It can be used with many testing frameworks e.g. <a
|
64
|
+
href="http://www.ruby-doc.org/core/classes/Test/Unit.html">Test::Unit</a>,
|
65
|
+
<a href="http://rspec.info/">RSpec</a>, <a
|
66
|
+
href="http://chneukirchen.org/repos/testspec/README">test/spec</a>, <a
|
67
|
+
href="http://expectations.rubyforge.org/">expectations</a>, <a
|
68
|
+
href="http://dust.rubyforge.org/">Dust</a>, <a
|
69
|
+
href="http://rubyforge.org/projects/bfts">MiniTest</a> and even <a
|
70
|
+
href="http://jtestr.codehaus.org/">JtestR</a>.</p>
|
71
|
+
|
72
|
+
<p>Mocha provides a unified, simple and readable syntax for both traditional
|
73
|
+
mocking and partial mocking.</p>
|
74
|
+
|
75
|
+
<p>Mocha was harvested from projects at <a
|
76
|
+
href="http://www.reevoo.com/">Reevoo</a> by me (<a
|
77
|
+
href="http://jamesmead.org/">James</a>) and my (then) colleagues <a
|
78
|
+
href="http://www.techbelly.com/">Ben</a>, <a
|
79
|
+
href="http://chrisroos.co.uk/">Chris</a> and <a
|
80
|
+
href="http://po-ru.com/">Paul</a>.</p>
|
81
|
+
|
82
|
+
<h2>Installation</h2>
|
83
|
+
|
84
|
+
<p>Install the latest version of the gem with the following command…</p>
|
85
|
+
|
86
|
+
<pre class="code ruby"><code>$ gem install mocha</code></pre>
|
87
|
+
|
88
|
+
<p>Note that if you are intending to use Mocha with Test::Unit or MiniTest,
|
89
|
+
you should only load Mocha <b>after</b> loading the relevant test library…</p>
|
90
|
+
|
91
|
+
<pre class="code ruby"><code><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>test/unit</span><span class='tstring_end'>"</span></span>
|
92
|
+
<span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>mocha</span><span class='tstring_end'>"</span></span></code></pre>
|
93
|
+
|
94
|
+
<p>If you’re using Bundler, ensure the correct load order by not
|
95
|
+
auto-requiring Mocha in the Gemfile and then later load it once you know
|
96
|
+
the test library has been loaded…</p>
|
97
|
+
|
98
|
+
<pre class="code ruby"><code><span class='comment'># Gemfile
|
99
|
+
</span><span class='id identifier rubyid_gem'>gem</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>mocha</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='symbol'>:require</span> <span class='op'>=></span> <span class='kw'>false</span>
|
100
|
+
|
101
|
+
<span class='comment'># Elsewhere after Bundler has loaded gems
|
102
|
+
</span><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>test/unit</span><span class='tstring_end'>"</span></span>
|
103
|
+
<span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>mocha</span><span class='tstring_end'>"</span></span></code></pre>
|
104
|
+
|
105
|
+
<p>Note that versions 0.10.2 & 0.10.3 included a bug. Please do not use
|
106
|
+
these versions.</p>
|
107
|
+
|
108
|
+
<p>Or install the <a href="http://www.rubyonrails.org/">Rails</a> plugin…</p>
|
109
|
+
|
110
|
+
<pre class="code ruby"><code>$ script/plugin install git://github.com/floehopper/mocha.git</code></pre>
|
111
|
+
|
112
|
+
<p>Note that versions 0.9.6 & 0.9.7 of the Rails plugin were broken. As of
|
113
|
+
version 0.9.8, you need to explicitly load Mocha after the test framework
|
114
|
+
e.g. by adding “require ‘mocha’” at the bottom of test/test_helper.rb.</p>
|
115
|
+
|
116
|
+
<h2>Examples</h2>
|
117
|
+
<ul><li>
|
118
|
+
<p>Quick Start - <a href="file.misc.html" title="Usage Examples">Usage Examples</a></p>
|
119
|
+
</li><li>
|
120
|
+
<p>Traditional mocking - <a href="file.mocha.html" title="Star Trek Example">Star Trek Example</a></p>
|
121
|
+
</li><li>
|
122
|
+
<p>Setting expectations on real classes - <a href="file.stubba.html" title="Order Example">Order Example</a></p>
|
123
|
+
</li><li>
|
124
|
+
<p>More examples on <a href="http://jamesmead.org/blog/">James Mead’s Blog</a></p>
|
125
|
+
</li><li>
|
126
|
+
<p><a href="http://groups.google.com/group/mocha-developer">Mailing List
|
127
|
+
Archives</a></p>
|
128
|
+
</li></ul>
|
129
|
+
|
130
|
+
<h2>Links</h2>
|
131
|
+
<ul><li>
|
132
|
+
<p><a href="http://github.com/floehopper/mocha">Source code</a></p>
|
133
|
+
</li><li>
|
134
|
+
<p><a href="http://github.com/floehopper/mocha/issues">Bug reports</a></p>
|
135
|
+
</li></ul>
|
136
|
+
|
137
|
+
<h2>License</h2>
|
138
|
+
|
139
|
+
<p>Copyright Revieworld Ltd. 2006</p>
|
140
|
+
|
141
|
+
<p>You may use, copy and redistribute this library under the same terms as <a
|
142
|
+
href="http://www.ruby-lang.org/en/LICENSE.txt">Ruby itself</a> or under the
|
143
|
+
<a href="file.MIT-LICENSE.html" title="MIT license">MIT license</a>.</p>
|
144
|
+
</div></div>
|
145
|
+
|
146
|
+
<div id="footer">
|
147
|
+
Generated on Thu Apr 19 10:54:33 2012 by
|
148
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
149
|
+
0.7.5 (ruby-1.9.3).
|
150
|
+
</div>
|
151
|
+
|
152
|
+
</body>
|
153
|
+
</html>
|
@@ -0,0 +1,933 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
6
|
+
<title>
|
7
|
+
File: RELEASE
|
8
|
+
|
9
|
+
— Mocha 0.11.0
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
16
|
+
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
relpath = '';
|
19
|
+
if (relpath != '') relpath += '/';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
23
|
+
|
24
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
25
|
+
|
26
|
+
|
27
|
+
</head>
|
28
|
+
<body>
|
29
|
+
<script type="text/javascript" charset="utf-8">
|
30
|
+
if (window.top.frames.main) document.body.className = 'frames';
|
31
|
+
</script>
|
32
|
+
|
33
|
+
<div id="header">
|
34
|
+
<div id="menu">
|
35
|
+
|
36
|
+
<a href="_index.html" title="Index">Index</a> »
|
37
|
+
<span class="title">File: RELEASE</span>
|
38
|
+
|
39
|
+
|
40
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<div id="search">
|
44
|
+
|
45
|
+
<a id="class_list_link" href="#">Class List</a>
|
46
|
+
|
47
|
+
<a id="method_list_link" href="#">Method List</a>
|
48
|
+
|
49
|
+
<a id="file_list_link" href="#">File List</a>
|
50
|
+
|
51
|
+
</div>
|
52
|
+
<div class="clear"></div>
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<iframe id="search_frame"></iframe>
|
56
|
+
|
57
|
+
<div id="content"><div id='filecontents'>
|
58
|
+
<h1>0.11.0 ()</h1>
|
59
|
+
<ul><li>
|
60
|
+
<p>Store original method when stubbing rather than using alias_method. This
|
61
|
+
fixes #41, #47, #74 and all tests now pass on both Ruby 1.8.7 and 1.9.3.</p>
|
62
|
+
</li><li>
|
63
|
+
<p>Attempting to stub a method on a frozen object should fail fast. See #68.</p>
|
64
|
+
</li><li>
|
65
|
+
<p>Prevent stubbing a method on nil by default. See #68.</p>
|
66
|
+
</li><li>
|
67
|
+
<p>Generate documentation using YARD instead of Rdoc - removes dependency on
|
68
|
+
Coderay.</p>
|
69
|
+
</li><li>
|
70
|
+
<p>Publish documentation on Github pages instead of Rubyforge - uses rake task
|
71
|
+
written by @tomafro.</p>
|
72
|
+
</li><li>
|
73
|
+
<p>Remove agiledox which has outlived it’s usefulness.</p>
|
74
|
+
</li><li>
|
75
|
+
<p>Removed trailing whitespace throughout codebase.</p>
|
76
|
+
</li><li>
|
77
|
+
<p>Add documentation for Mock#unstub.</p>
|
78
|
+
</li><li>
|
79
|
+
<p>Improve documentation for ObjectMethods.</p>
|
80
|
+
</li><li>
|
81
|
+
<p>Provide a way to run multiple tests within a single acceptance test method.</p>
|
82
|
+
</li></ul>
|
83
|
+
|
84
|
+
<h1>0.10.5 (a5a64cf9755b21d4a30e446232654d1c0fc6f151)</h1>
|
85
|
+
<ul><li>
|
86
|
+
<p>Fix for issue #66 (hopefully without regressing on issue #63) - Mocha::Mock
|
87
|
+
has Mocha::Mockery as a dependency. Stop trying to pretend otherwise.
|
88
|
+
Thanks to @kennyj for reporting.</p>
|
89
|
+
</li><li>
|
90
|
+
<p>Fix a bunch of warnings in Ruby 1.9. There are still the 6 test failures
|
91
|
+
mentioned in issue #41 which I suspect are due to the introspection gem not
|
92
|
+
being Ruby 1.9-compatible.</p>
|
93
|
+
</li><li>
|
94
|
+
<p>Add links to README for source code & issue tracker.</p>
|
95
|
+
</li><li>
|
96
|
+
<p>Fix for issue #67 - Make the travis-ci badge visible in the README. Thanks
|
97
|
+
to Diego Plentz for pull request.</p>
|
98
|
+
</li><li>
|
99
|
+
<p>Fix for issue #70 - Rename Mock#expectations to Mock#__expectations__ to
|
100
|
+
avoid conflicts. Thanks to Jeremy Stephens for pull request.</p>
|
101
|
+
</li></ul>
|
102
|
+
|
103
|
+
<h1>0.10.4 (babdd656c361ac65f25948104adf612e59174a5e)</h1>
|
104
|
+
<ul><li>
|
105
|
+
<p>Fix for issue #65 - expectations not being verified in subsequent tests.</p>
|
106
|
+
</li><li>
|
107
|
+
<p>Fix for issue #63 - require Mocha::Mockery at Mocha::Mock class load time
|
108
|
+
and not on invocation of Mock#method_missing.</p>
|
109
|
+
</li><li>
|
110
|
+
<p>Fix for issue #45 - raise ArgumentError if
|
111
|
+
Mocha::ParameterMatchers#has_entry is given</p>
|
112
|
+
</li></ul>
|
113
|
+
|
114
|
+
<p>Hash with wrong number of entries.</p>
|
115
|
+
<ul><li>
|
116
|
+
<p>Make global variable name more obscure to avoid clashes with other
|
117
|
+
libraries.</p>
|
118
|
+
</li><li>
|
119
|
+
<p>Move travis-ci-related gemfiles into their own directory.</p>
|
120
|
+
</li></ul>
|
121
|
+
|
122
|
+
<h1>0.10.3 (e7f88af8e7c3396bc85fe9f9cb9e5f5fef04bea2)</h1>
|
123
|
+
<ul><li>
|
124
|
+
<p>Fix for issue #57. Gem::Requirement#=~ was only added in rubygems v1.8.0,
|
125
|
+
but Object#=~ means the result of various monkey-patching checks is always
|
126
|
+
false/nil for earlier versions of rubygems. However, the method it aliases
|
127
|
+
#satisfied_by? has existed since Gem::Dependency was extracted from
|
128
|
+
Gem::Version in rubygems v0.9.4.4, so it’s much safer to use that. Thanks
|
129
|
+
to fguillen for reporting and helping with diagnosis.</p>
|
130
|
+
</li></ul>
|
131
|
+
|
132
|
+
<h1>0.10.2 (e05d9a555f1cf97c5961900dab0d884e9753257b)</h1>
|
133
|
+
<ul><li>
|
134
|
+
<p>Merge pull request #53. Unstubbing a method should not remove expectations
|
135
|
+
for other stubbed methods. Fixes #52. Thanks to saikat.</p>
|
136
|
+
</li></ul>
|
137
|
+
|
138
|
+
<h1>0.10.1 (f631a4ba22c6ed4929c52b0520311a9a84034a20)</h1>
|
139
|
+
<ul><li>
|
140
|
+
<p>Merge pull request #51. Use Gem::Requirement & Gem::Version for version
|
141
|
+
comparison. Fixes issue #50. Thanks to meineerde.</p>
|
142
|
+
</li><li>
|
143
|
+
<p>Fixed typo in rdoc for Mocha::ObjectMethods.</p>
|
144
|
+
</li><li>
|
145
|
+
<p>Improve README as suggested in issue #46. Explain that Mocha must be loaded
|
146
|
+
after test libraries and how to achieve this using Bundler.</p>
|
147
|
+
</li><li>
|
148
|
+
<p>Merge pull request #43 - nobody expects the spanish inquisition! Thanks to
|
149
|
+
cairo140.</p>
|
150
|
+
</li><li>
|
151
|
+
<p>Fix for issue #39 - improve documentation for Expectation#multiple_yields.</p>
|
152
|
+
</li><li>
|
153
|
+
<p>Fix for issue #38 where a subtle change in test-unit v2.3.0 had been missed
|
154
|
+
- only visible in verbose mode.</p>
|
155
|
+
</li><li>
|
156
|
+
<p>Support for MiniTest up to v2.6.2 has been verified.</p>
|
157
|
+
</li><li>
|
158
|
+
<p>Add explicit development dependency on coderay for generating
|
159
|
+
syntax-highlighted code examples.</p>
|
160
|
+
</li></ul>
|
161
|
+
|
162
|
+
<h1>0.10.0 (68a4a59e1af74baf3929af418f73f5627bba548d)</h1>
|
163
|
+
<ul><li>
|
164
|
+
<p>Add Expectation#throws to allow a stubbed method to use Kernel#throw.</p>
|
165
|
+
</li><li>
|
166
|
+
<p>Updates for versions of Test::Unit up to and including v2.3.3 (including
|
167
|
+
patch by Jens Fahnenbruck).</p>
|
168
|
+
</li><li>
|
169
|
+
<p>Updates for versions of MiniTest up to and including v2.5.1.</p>
|
170
|
+
</li><li>
|
171
|
+
<p>Since the singleton method added by Mocha masks the underlying instance
|
172
|
+
method, there’s no need to move it out the way and then back again. This
|
173
|
+
fixes Github issue #20, because the original method is left unchanged - <a
|
174
|
+
href="https://github.com/floehopper/mocha/issues/20">github.com/floehopper/mocha/issues/20</a>
|
175
|
+
(thanks to Nick Lewis).</p>
|
176
|
+
</li><li>
|
177
|
+
<p>Handle stubbing of a singleton method, leaving the original method
|
178
|
+
unchanged after the test.</p>
|
179
|
+
</li><li>
|
180
|
+
<p>When stubbing an instance method that was originally defined as a singleton
|
181
|
+
method, the original method should still exist after the test.</p>
|
182
|
+
</li><li>
|
183
|
+
<p>Fixed mis-print in Mocha::ObjectMethods#unstub documentation (patch by Gleb
|
184
|
+
Pomykalov).</p>
|
185
|
+
</li><li>
|
186
|
+
<p>Improved test coverage around stubbing of methods defined in different ways
|
187
|
+
- this makes use of the newly extracted introspection gem (although this
|
188
|
+
means some tests are now failing in Ruby v1.9.2).</p>
|
189
|
+
</li><li>
|
190
|
+
<p>Added configuration for Travis continuous integration.</p>
|
191
|
+
</li><li>
|
192
|
+
<p>Make the gemspec the canonical reference and stop generating it from the
|
193
|
+
Rakefile.</p>
|
194
|
+
</li><li>
|
195
|
+
<p>Use the built-in Bundler rake tasks for packaging the gem.</p>
|
196
|
+
</li><li>
|
197
|
+
<p>Use the “release” rake task provided by Bundler instead of using the
|
198
|
+
Rake::XForge::Release functionality.</p>
|
199
|
+
</li><li>
|
200
|
+
<p>Extract Object#__metaclass__ into a new metaclass gem.</p>
|
201
|
+
</li><li>
|
202
|
+
<p>Run rake tasks without `bundle exec`.</p>
|
203
|
+
</li><li>
|
204
|
+
<p>Avoid deprecation warning for rdoc rake task.</p>
|
205
|
+
</li><li>
|
206
|
+
<p>Remove the `use_test_unit_gem` MOCHA_OPTION which hasn’t worked since we
|
207
|
+
switched to bundler - we can now run the tests specifying a different
|
208
|
+
Gemfile instead.</p>
|
209
|
+
</li><li>
|
210
|
+
<p>Use multiple Gemfiles seems to run Travis CI builds against multiple
|
211
|
+
version of test-unit & minitest.</p>
|
212
|
+
</li></ul>
|
213
|
+
|
214
|
+
<h1>0.9.12 (8bb523e8467626c23b271eb529c33fb118e368fe)</h1>
|
215
|
+
<ul><li>
|
216
|
+
<p>Make Mocha’s tests pass under Ruby 1.9.2 i.e. using MiniTest. One of the
|
217
|
+
main issues was that we were not parsing stacktraces on MiniTest errors
|
218
|
+
comprehensively enough.</p>
|
219
|
+
</li><li>
|
220
|
+
<p>Avoid ‘circular require considered harmful’ warning when running Mocha’s
|
221
|
+
tests in Ruby 1.9.2</p>
|
222
|
+
</li><li>
|
223
|
+
<p>Make performance tests work on Ruby 1.9.2 i.e. using MiniTest.</p>
|
224
|
+
</li><li>
|
225
|
+
<p>Declare rake as a <b>development</b> dependency with newer versions of
|
226
|
+
Rubygems since it’s only needed to carry out developer-related tasks.</p>
|
227
|
+
</li></ul>
|
228
|
+
|
229
|
+
<h1>0.9.11 (1613ed2267fef5927ea06adfdbcf512b89eadaad)</h1>
|
230
|
+
<ul><li>
|
231
|
+
<p>Added explicit support for minitest v1.5.0 to v2.0.2.</p>
|
232
|
+
</li><li>
|
233
|
+
<p>Make testable by rubygems-test.</p>
|
234
|
+
</li><li>
|
235
|
+
<p>Update links to my blog and make other links consistent.</p>
|
236
|
+
</li><li>
|
237
|
+
<p>Added a URI parameter matcher that ignores the order of query parameters so
|
238
|
+
that tests can be independent of undefined hash ordering (patch by Paul
|
239
|
+
Battley).</p>
|
240
|
+
</li><li>
|
241
|
+
<p>Include unexpected invocation in failure message and change the language
|
242
|
+
slightly to make the failure message less confusing. See <a
|
243
|
+
href="http://floehopper.lighthouseapp.com/projects/22289/tickets/52">floehopper.lighthouseapp.com/projects/22289/tickets/52</a>.</p>
|
244
|
+
</li><li>
|
245
|
+
<p>No need to create regular expression every time the
|
246
|
+
BacktraceFilter#filtered method is called. See <a
|
247
|
+
href="http://floehopper.lighthouseapp.com/projects/22289-mocha/tickets/66">floehopper.lighthouseapp.com/projects/22289-mocha/tickets/66</a>.</p>
|
248
|
+
</li></ul>
|
249
|
+
|
250
|
+
<h1>0.9.10 (31182ea8b38b79aa50702aa839f6a29ebcf7d684)</h1>
|
251
|
+
<ul><li>
|
252
|
+
<p>Added Mocha::ObjectMethods#unstub method - <a
|
253
|
+
href="https://github.com/floehopper/mocha/issues#issue/6">github.com/floehopper/mocha/issues#issue/6</a></p>
|
254
|
+
</li><li>
|
255
|
+
<p>Inherit Mocha::ExpectationError from Exception instead of StandardError to
|
256
|
+
reduce the chances of a test passing by accident - thanks to James Sanders
|
257
|
+
(jsanders) - <a
|
258
|
+
href="https://github.com/floehopper/mocha/issues#issue/15">github.com/floehopper/mocha/issues#issue/15</a></p>
|
259
|
+
</li><li>
|
260
|
+
<p>Fixed bug - GitHub README page to link correctly to code examples - <a
|
261
|
+
href="https://github.com/floehopper/mocha/issues/closed#issue/11">github.com/floehopper/mocha/issues/closed#issue/11</a></p>
|
262
|
+
</li><li>
|
263
|
+
<p>Fixed bug - PASSTHROUGH_EXCEPTIONS are defined on MiniTest::Unit::TestCase
|
264
|
+
not in Mocha - thanks to Brian Troutwine (blt) - <a
|
265
|
+
href="https://github.com/floehopper/mocha/issues/closed#issue/14">github.com/floehopper/mocha/issues/closed#issue/14</a></p>
|
266
|
+
</li></ul>
|
267
|
+
|
268
|
+
<h1>0.9.9 (ee3a79db4d52c3339e8acf07505e01236a2b4810)</h1>
|
269
|
+
<ul><li>
|
270
|
+
<p>Avoid loading bits of the test-unit gem by accident. This is an attempt at
|
271
|
+
a fix for the problem that James Adam reported [1]. By using ‘load’ instead
|
272
|
+
of ‘require’ to detect the version of Test::Unit, we can avoid rubygems
|
273
|
+
trying to load bits of the test-unit gem when it’s not wanted. [1] <a
|
274
|
+
href="http://floehopper.lighthouseapp.com/projects/22289-mocha/tickets/50#ticket-50-13">floehopper.lighthouseapp.com/projects/22289-mocha/tickets/50#ticket-50-13</a></p>
|
275
|
+
</li><li>
|
276
|
+
<p>Fix exception when running rake without test-unit gem. When test-unit gem
|
277
|
+
>=v2.0.0 was installed but the “use_test_unit_gem” MOCHA_OPTIONS was not
|
278
|
+
specified, a “comparison of Fixnum with Hash failed” exception was being
|
279
|
+
raised when running the performance tests. This was because bits of the
|
280
|
+
test-unit gem were being loaded accidentally and a Hash was being
|
281
|
+
incorrectly supplied to the TestRunner.run method.</p>
|
282
|
+
</li><li>
|
283
|
+
<p>Explicitly require rubygems for running tests via rake using test-unit gem.</p>
|
284
|
+
</li><li>
|
285
|
+
<p>Handle newer versions of test-unit gem (v2.0.2 to v2.0.9)</p>
|
286
|
+
</li><li>
|
287
|
+
<p>Handle newer versions of minitest gem (v1.4.0 to v1.6.0)</p>
|
288
|
+
</li><li>
|
289
|
+
<p>Added warnings about monkey-patching test-unit and minitest to aid
|
290
|
+
debugging. These are enabled by including “debug” in the MOCHA_OPTIONS
|
291
|
+
environment variable. This is now a comma-separated list, so that we can
|
292
|
+
specify multiple options e.g. MOCHA_OPTIONS=debug,use_test_unit_gem</p>
|
293
|
+
</li><li>
|
294
|
+
<p>Eloy Duran (alloy) made the unit tests run on 1.9.2dev r25249.</p>
|
295
|
+
</li><li>
|
296
|
+
<p>Eloy Duran (alloy) also improved some MiniTest TestResult code I’d written
|
297
|
+
and got the acceptance tests running on Ruby 1.9 HEAD. There are still 4
|
298
|
+
failures because for some reason the backtrace line numbers are off by one.
|
299
|
+
And the minitest_test test case does not run when the whole suite is run
|
300
|
+
with MiniTest. These issues still need investigation.</p>
|
301
|
+
</li><li>
|
302
|
+
<p>Fixed some acceptance tests to run in Ruby 1.9.2 - it’s no longer possible
|
303
|
+
to subvert the protection of a method by calling it via Object#send.</p>
|
304
|
+
</li><li>
|
305
|
+
<p>Fixed “test:performance” rake task so it runs in Ruby 1.9.2.</p>
|
306
|
+
</li><li>
|
307
|
+
<p>Fix test incorrectly failing under Rubinius 1.0. This test imposed too many
|
308
|
+
constraints. It appears that Object#inspect legitimately calls
|
309
|
+
Object#object_id in Rubinius. But we’re only interested in what ‘id’
|
310
|
+
methods Mocha::ObjectMethods#mocha_inspect calls. By stubbing
|
311
|
+
Object#inspect we can relax the constraints imposed by the test.</p>
|
312
|
+
</li><li>
|
313
|
+
<p>Luke Redpath (lukeredpath) added new shorthand “any” and “all” composite
|
314
|
+
parameter matchers using “&” and “|”. This provides an alternative
|
315
|
+
syntax for expecting any or all matchers to pass, e.g.
|
316
|
+
foo.expects(:bar).with(equals(1) | equals(2)).</p>
|
317
|
+
</li><li>
|
318
|
+
<p>Improved documentation for Expectation#raises. A number of people have
|
319
|
+
suggested an extension to the API to cope with custom exceptions that have
|
320
|
+
extra constructor parameters. However, since the arguments supplied to
|
321
|
+
Expectation#raises are just passed on to Kernel#raise, it’s possible to
|
322
|
+
pass in an instance of an exception. Thus no change to the API is required,
|
323
|
+
but it does seem worthwhile pointing this out in the docs.</p>
|
324
|
+
</li><li>
|
325
|
+
<p>Corrected RDoc example for Expectation#never thanks to Red David
|
326
|
+
(reddavis).</p>
|
327
|
+
</li><li>
|
328
|
+
<p>Improved RDoc including a change suggested by Rohit Arondekar (rohit).</p>
|
329
|
+
</li><li>
|
330
|
+
<p>Updated gemspec as requested by Sam Woodard (shwoodard).</p>
|
331
|
+
</li></ul>
|
332
|
+
|
333
|
+
<h1>0.9.8 (645024765b2d92018efc511652e1174163844e39)</h1>
|
334
|
+
<ul><li>
|
335
|
+
<p>Fixed bug “NameError raised when using Mocha as a Rails plug-in” - <a
|
336
|
+
href="http://floehopper.lighthouseapp.com/projects/22289/tickets/53">floehopper.lighthouseapp.com/projects/22289/tickets/53</a>.
|
337
|
+
Since 0.9.6 the Rails plugin has been broken. See bug report for details.
|
338
|
+
You will need to explicitly load Mocha <b>after</b> the test framework has
|
339
|
+
been loaded, e.g. by adding “require ‘mocha’” at the bottom of
|
340
|
+
test/test_helper.rb.</p>
|
341
|
+
</li><li>
|
342
|
+
<p>Make Mocha::ParameterMatchers#regexp_matches, #includes, #has_value,
|
343
|
+
#has_key more robust. Thanks to Sander Hartlage.</p>
|
344
|
+
</li><li>
|
345
|
+
<p>Allow passing a block to Mocha::Configuration methods to only change
|
346
|
+
configuration for the duration of the block. Thanks to Dan Manges.</p>
|
347
|
+
</li><li>
|
348
|
+
<p>Fixed bug “doc generation fails in 0.9.7 gem” - <a
|
349
|
+
href="http://floehopper.lighthouseapp.com/projects/22289/tickets/51">floehopper.lighthouseapp.com/projects/22289/tickets/51</a>.</p>
|
350
|
+
</li><li>
|
351
|
+
<p>Remove rdoc template incorporating google analytics from source control.
|
352
|
+
The file just needs to exist locally and be ignored by source control. This
|
353
|
+
should stop the warning showing up on e.g. RunCodeRun build results.</p>
|
354
|
+
</li></ul>
|
355
|
+
|
356
|
+
<h1>0.9.7 (80d816f250dc13aaf856f3f9cbd97ebe9c371839)</h1>
|
357
|
+
<ul><li>
|
358
|
+
<p>Although I had provided a deprecation warning for people using
|
359
|
+
Mocha::Standalone, I had assumed people wouldn’t be explicitly loading the
|
360
|
+
mocha/standalone.rb file. It turns out this assumption was incorrect at
|
361
|
+
least in the case of Rspec. This is now fixed.</p>
|
362
|
+
</li></ul>
|
363
|
+
|
364
|
+
<h1>0.9.6 (57f8f77d715b7f1d9efee2e1a9438f7905c0006b)</h1>
|
365
|
+
<ul><li>
|
366
|
+
<p>Version 2.0.1 of the test-unit gem introduced a private ‘run_test’ method
|
367
|
+
on TestCase which clashed with the public TestRunner#run_test method. So
|
368
|
+
this latter method has been renamed to ‘run_as_test’.</p>
|
369
|
+
</li><li>
|
370
|
+
<p>Stop requiring rubygems - this should be an environmental choice for the
|
371
|
+
user. <a href="http://gist.github.com/54177">gist.github.com/54177</a> -
|
372
|
+
describes why requiring rubygems in your library code is a bad idea.</p>
|
373
|
+
</li><li>
|
374
|
+
<p>It seems like overkill to vendorize coderay and meta_project when they’re
|
375
|
+
only needed to generate the examples for documentation and for publishing
|
376
|
+
files on RubyForge. So I’m removing them and installing them locally as
|
377
|
+
gems when I need them.</p>
|
378
|
+
</li><li>
|
379
|
+
<p>Added support for ‘test-unit’ gem (version >= 2.0). Note that as with
|
380
|
+
other versions of Test::Unit I’m completely replacing the TestCase#run
|
381
|
+
method. Unfortunately in version 2.0.0 this method differs slightly from
|
382
|
+
the same method in version 2.0.1 & 2.0.2, so we have to provide
|
383
|
+
different implementations to ensure that the internal working of Test::Unit
|
384
|
+
are not compromised by Mocha. Note also that unless the ‘test-unit’ gem is
|
385
|
+
loaded, requiring ‘test/unit’ leads to a mixture of stdlib and gem classes
|
386
|
+
being loaded causing errors. To avoid a dependency on rubygems, the gem is
|
387
|
+
loaded only if MOCHA_OPTIONS is set to ‘use_test_unit_gem’ - this option is
|
388
|
+
only intended for use in running Mocha’s own tests. It might be worthwhile
|
389
|
+
to create a shim gem like minitest_tu_shim to allow the test-unit gem to
|
390
|
+
completely replace the stdlib, but that’s a job for another day. The
|
391
|
+
changes in the Rakefile are to make the default task run with the
|
392
|
+
‘test-unit’ gem (version >= 2.0).</p>
|
393
|
+
</li><li>
|
394
|
+
<p>Renamed Mocha::Standalone to Mocha::API to better reflect its purpose.
|
395
|
+
Added a deprecation warning for those who are referencing
|
396
|
+
Mocha::Standalone.</p>
|
397
|
+
</li><li>
|
398
|
+
<p>Fix exception raised by HasEntry#matches? if first param is not a Hash
|
399
|
+
(thanks to Taylor Barstow).</p>
|
400
|
+
</li><li>
|
401
|
+
<p>Ken Collins reported [1] that Mocha is always loading MiniTest if it is
|
402
|
+
available and loading it causes some Rails/ActionPack tests to break. I’ve
|
403
|
+
removed the loading of MiniTest, but this now means the user has to ensure
|
404
|
+
that if they want to use MiniTest in conjunction with Mocha, he must load
|
405
|
+
MiniTest before loading Mocha. [1] <a
|
406
|
+
href="http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/2060">rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/2060</a></p>
|
407
|
+
</li><li>
|
408
|
+
<p>Implemented Bacon integration (thanks to Ubiratan Pires Alberton), but this
|
409
|
+
was then removed after deciding only to maintain integration with
|
410
|
+
Test::Unit and MiniTest which are both Ruby standard libraries. See mailing
|
411
|
+
list for details.</p>
|
412
|
+
</li><li>
|
413
|
+
<p>Don’t monkey-patch MiniTest if it’s already been monkey-patched by Mocha.</p>
|
414
|
+
</li><li>
|
415
|
+
<p>Fixed bug: MiniTest integration was counting ExpectationErrors as errors
|
416
|
+
not failures. <a
|
417
|
+
href="http://floehopper.lighthouseapp.com/projects/22289-mocha/tickets/41">floehopper.lighthouseapp.com/projects/22289-mocha/tickets/41</a>.</p>
|
418
|
+
</li><li>
|
419
|
+
<p>Fixed bug: Some Bacon tests were failing in Ruby 1.9.1. <a
|
420
|
+
href="http://floehopper.lighthouseapp.com/projects/22289-mocha/tickets/43">floehopper.lighthouseapp.com/projects/22289-mocha/tickets/43</a>.</p>
|
421
|
+
</li><li>
|
422
|
+
<p>Chad Humphries pointed out that in Ruby 1.9.1, if you are not using
|
423
|
+
Test::Unit or MiniTest, Mocha will attempt to load and monkey-patch
|
424
|
+
Test::Unit. Mocha will now only monkey-patch Test::Unit and/or MiniTest if
|
425
|
+
they have already been loaded. MiniTest tests will now run in both Ruby
|
426
|
+
1.8.6 (with MiniTest gem) and in Ruby 1.9.1 (with MiniTest std lib). See
|
427
|
+
Ligthouse ticket - <a
|
428
|
+
href="http://floehopper.lighthouseapp.com/projects/22289/tickets/49">floehopper.lighthouseapp.com/projects/22289/tickets/49</a>.</p>
|
429
|
+
</li><li>
|
430
|
+
<p>Made Mocha compatible with minitest 1.4.0 and above (thanks to Denis
|
431
|
+
Defreyne).</p>
|
432
|
+
</li></ul>
|
433
|
+
|
434
|
+
<h1>0.9.5 (93cad010345ce5d68f31422cfc32ed9dd6de13ec)</h1>
|
435
|
+
<ul><li>
|
436
|
+
<p>Fixed Lighthouse bug #32 - stub_everything should mean mock responds to
|
437
|
+
anything.</p>
|
438
|
+
</li><li>
|
439
|
+
<p>Added Expectation#twice to improve readability. Thanks to pull request from
|
440
|
+
Celestino Gomes.</p>
|
441
|
+
</li><li>
|
442
|
+
<p>In Ruby 1.9.1, requiring ‘test/unit’ loads a thin wrapper around MiniTest
|
443
|
+
and Test::Unit::TestCase ends up inheriting from MiniTest::Unit::TestCase.
|
444
|
+
So we need to avoid including the Mocha modules more than once to avoid
|
445
|
+
nasty consequences. Thanks to Matthias Hennemeyer for help with this.</p>
|
446
|
+
</li><li>
|
447
|
+
<p>Ruby 1.9 includes rake, but not rake/contrib. For the moment I’ve moved the
|
448
|
+
sshpublisher require into the only rake task that needs it, so that I can
|
449
|
+
at least run the tests in Ruby 1.9. It looks like I will need to build a
|
450
|
+
rake/contrib gem or similar to get this working properly - <a
|
451
|
+
href="http://intertwingly.net/blog/2008/01/07/Rake-Contrib-for-1-9">intertwingly.net/blog/2008/01/07/Rake-Contrib-for-1-9</a></p>
|
452
|
+
</li></ul>
|
453
|
+
|
454
|
+
<h1>0.9.4 (8a59c6ff0f99f34b02bd99f19536a7893be2b340)</h1>
|
455
|
+
<ul><li>
|
456
|
+
<p>Added mocha.gemspec file generated with Chad Woolley’s new rake task, so
|
457
|
+
that a floehopper-mocha gem will get built on GitHub.</p>
|
458
|
+
</li><li>
|
459
|
+
<p>Add rake task to update mocha.gemspec with unique version, which will cause
|
460
|
+
gem to be auto-built on github</p>
|
461
|
+
</li><li>
|
462
|
+
<p>As Tobias Crawley correctly pointed out in feature request #23055
|
463
|
+
“stubs(with_hash) not working with existing object” [1], following the
|
464
|
+
principle of least surprise, it should be possible to call
|
465
|
+
ObjectMethods#expects & ObjectMethods#stubs with a Hash of method_names
|
466
|
+
vs return_values like you can with Mock#expects & Mock#stubs. I’ve also
|
467
|
+
updated & improved the docs to reflect the changes. [1] <a
|
468
|
+
href="http://rubyforge.org/tracker/index.php?func=detail&aid=23055&group_id=1917&atid=7480">rubyforge.org/tracker/index.php?func=detail&aid=23055&group_id=1917&atid=7480</a></p>
|
469
|
+
</li><li>
|
470
|
+
<p>Removed deprecated gem autorequire.</p>
|
471
|
+
</li></ul>
|
472
|
+
|
473
|
+
<h1>0.9.3 (8219bb2d2881c8529c93fc21e97a11d01203c759)</h1>
|
474
|
+
<ul><li>
|
475
|
+
<p>Added support for MiniTest thanks to Jeff Smick.</p>
|
476
|
+
</li><li>
|
477
|
+
<p>Fixed a possible bug with some of the non-default Configuration options
|
478
|
+
relating to the argument to Object#respond_to?</p>
|
479
|
+
</li><li>
|
480
|
+
<p>As per Jay Fields recommendations [1] and with further impetus from a talk
|
481
|
+
at Ruby Manor, any methods added to core classes are now added by including
|
482
|
+
a module. This means that Mocha is a better citizen of the Ruby world and
|
483
|
+
it’s behaviour is more easily extended. [1] <a
|
484
|
+
href="http://blog.jayfields.com/2008/07/ruby-underuse-of-modules.html">blog.jayfields.com/2008/07/ruby-underuse-of-modules.html</a>
|
485
|
+
& <a
|
486
|
+
href="http://blog.jayfields.com/2008/07/ruby-redefine-method-behavior.html">blog.jayfields.com/2008/07/ruby-redefine-method-behavior.html</a></p>
|
487
|
+
</li><li>
|
488
|
+
<p>Removed deprecated gem autorequire.</p>
|
489
|
+
</li></ul>
|
490
|
+
|
491
|
+
<h1>0.9.2 (r355)</h1>
|
492
|
+
<ul><li>
|
493
|
+
<p>Improved documentation to address [#22530] ‘Mock methods with multiple
|
494
|
+
return values not possible?’</p>
|
495
|
+
</li><li>
|
496
|
+
<p>respond_with parameter matcher was not available in tests.</p>
|
497
|
+
</li><li>
|
498
|
+
<p>Patch [#22630] Fix for a bug in running Rails tests with Ruby 1.8.7.
|
499
|
+
Array#flatten was being called which in turn was checking whether each
|
500
|
+
element responded to #to_ary. This check was using the two parameter
|
501
|
+
version of #respond_to?, but Mock was only defining a one parameter
|
502
|
+
version.</p>
|
503
|
+
</li></ul>
|
504
|
+
|
505
|
+
<h1>0.9.1 (r349)</h1>
|
506
|
+
<ul><li>
|
507
|
+
<p>Fixed bug #21465 - expects & stubs should support method names as
|
508
|
+
strings (as well as symbols) or fail fast. Convert all expectation method
|
509
|
+
names to a symbol in case they were supplied as a string.</p>
|
510
|
+
</li><li>
|
511
|
+
<p>By removing Mock#unexpected_method_called we reduce the number of methods
|
512
|
+
vulnerable to the problem that surfaced in bug #21563.</p>
|
513
|
+
</li><li>
|
514
|
+
<p>Fix bug #21563 - stubbing ‘verified?’ method is unsafe. Instance method
|
515
|
+
names on the Mock class should be more obscure.</p>
|
516
|
+
</li><li>
|
517
|
+
<p>Performance improvement. StubbaExampleTest goes twice as fast on my local
|
518
|
+
machine.</p>
|
519
|
+
</li><li>
|
520
|
+
<p>Added primitive performance test to default rake task.</p>
|
521
|
+
</li><li>
|
522
|
+
<p>Fix format of case statements which don’t work in Ruby 1.9 and make others
|
523
|
+
consistent.</p>
|
524
|
+
</li><li>
|
525
|
+
<p>There is no point in running (potentially expensive) checks if
|
526
|
+
configuration is set to allow such checks to fail. This is a relatively
|
527
|
+
quick fix in response to Chris McGrath’s performance problems.</p>
|
528
|
+
</li><li>
|
529
|
+
<p>Fix for bug #21161 - ‘uninitialized constant Deprecation in stubba.rb’.</p>
|
530
|
+
</li><li>
|
531
|
+
<p>It’s more readable to talk about ‘once’ and ‘twice’ rather than ‘1 time’
|
532
|
+
and ‘2 times’.</p>
|
533
|
+
</li><li>
|
534
|
+
<p>Fix bug #20883 - never should raise when called to prevent follow up
|
535
|
+
errors. Fail fast when there are no matching invokable expectations and
|
536
|
+
handle the stub_everything case sensibly. This might not be entirely
|
537
|
+
backwards compatible, but I think the benefits outweigh the risks. The most
|
538
|
+
likely change is that a test that was already failing will now fail faster,
|
539
|
+
which doesn’t seem so awful.</p>
|
540
|
+
</li></ul>
|
541
|
+
|
542
|
+
<h1>0.9.0 (r316)</h1>
|
543
|
+
<ul><li>
|
544
|
+
<p>Configurable warnings or errors</p>
|
545
|
+
<ul><li>
|
546
|
+
<p>when a method on a non-public method is stubbed</p>
|
547
|
+
</li><li>
|
548
|
+
<p>when a method on a non-existent method is stubbed</p>
|
549
|
+
</li><li>
|
550
|
+
<p>when a method on a non-mock object is stubbed</p>
|
551
|
+
</li><li>
|
552
|
+
<p>when a method is stubbed unnecessarily (i.e. the stubbed method is not
|
553
|
+
called during the test)</p>
|
554
|
+
</li></ul>
|
555
|
+
</li><li>
|
556
|
+
<p>Improved error messages</p>
|
557
|
+
<ul><li>
|
558
|
+
<p>User-friendly list of unsatisfied expectations, satisfied expectations and
|
559
|
+
state machines.</p>
|
560
|
+
</li><li>
|
561
|
+
<p>Improved readability of cardinality description.</p>
|
562
|
+
</li><li>
|
563
|
+
<p>Display sensible failure message for any_instance expectations e.g.
|
564
|
+
“#<AnyInstance:Foo>.bar - expected calls: 1, actual calls: 0”</p>
|
565
|
+
</li></ul>
|
566
|
+
</li><li>
|
567
|
+
<p>Parameter matchers</p>
|
568
|
+
<ul><li>
|
569
|
+
<p>New to this release</p>
|
570
|
+
<ul><li>
|
571
|
+
<p>optionally (allows matching of optional parameters if available)</p>
|
572
|
+
</li><li>
|
573
|
+
<p>yaml_equivalent (allows matching of YAML that represents the specified
|
574
|
+
object)</p>
|
575
|
+
</li><li>
|
576
|
+
<p>responds_with (tests the quack not the duck)</p>
|
577
|
+
</li></ul>
|
578
|
+
</li><li>
|
579
|
+
<p>Nesting of parameter matchers is now supported.</p>
|
580
|
+
</li></ul>
|
581
|
+
</li><li>
|
582
|
+
<p>Optional block passed into mock initializer is evaluated in the context of
|
583
|
+
the new mock instance and can be used as a shortcut to set up expectations.</p>
|
584
|
+
</li><li>
|
585
|
+
<p>Added JMock-style sequences for constraining the order of expected
|
586
|
+
invocations. See Standalone#sequence and Expectation#in_sequence.</p>
|
587
|
+
</li><li>
|
588
|
+
<p>Added JMock-style states for constraining the order of expected
|
589
|
+
invocations. See Standalone#states, Expectation#then, Expectation#when and
|
590
|
+
StateMachine.</p>
|
591
|
+
</li><li>
|
592
|
+
<p>Compatibility with versions of Ruby</p>
|
593
|
+
<ul><li>
|
594
|
+
<p>Compatibility with Ruby v1.9. All test errors and warnings fixed.</p>
|
595
|
+
</li><li>
|
596
|
+
<p>Nasty fix so that TestCaseAdaptor works consistently with earlier versions
|
597
|
+
of Test::Unit as well as more recent versions.</p>
|
598
|
+
</li><li>
|
599
|
+
<p>Added platform to gem specification to avoid bug in rubygems 0.9.5 - see <a
|
600
|
+
href="http://www.dcmanges.com/blog/rubygems-0-9-5-platform-bug">www.dcmanges.com/blog/rubygems-0-9-5-platform-bug</a>
|
601
|
+
and <a
|
602
|
+
href="http://rubygems.org/read/chapter/20#platform">rubygems.org/read/chapter/20#platform</a>.</p>
|
603
|
+
</li><li>
|
604
|
+
<p>Make ExpectationRaiser deal with subclasses of Interrupt which seem to need
|
605
|
+
a message supplied in the raise statement in Ruby 1.8.6 (but not 1.8.4 or
|
606
|
+
1.9). Not sure this is really Mocha’s responsibility.</p>
|
607
|
+
</li></ul>
|
608
|
+
</li><li>
|
609
|
+
<p>Added deprecation warning in stubba.rb which is no longer needed and will
|
610
|
+
be removed.</p>
|
611
|
+
</li><li>
|
612
|
+
<p>Supply positioning information to evals to improve any error messages. See
|
613
|
+
<a
|
614
|
+
href="http://ola-bini.blogspot.com/2008/01/ruby-antipattern-using-eval-without.html">ola-bini.blogspot.com/2008/01/ruby-antipattern-using-eval-without.html</a></p>
|
615
|
+
</li><li>
|
616
|
+
<p>Bug fixes</p>
|
617
|
+
<ul><li>
|
618
|
+
<p>18914 in revision 296 - <a
|
619
|
+
href="http://rubyforge.org/tracker/index.php?func=detail&aid=18914&group_id=1917&atid=7477">rubyforge.org/tracker/index.php?func=detail&aid=18914&group_id=1917&atid=7477</a></p>
|
620
|
+
</li><li>
|
621
|
+
<p>18917 in revision 295 - <a
|
622
|
+
href="http://rubyforge.org/tracker/index.php?func=detail&aid=18917&group_id=1917&atid=7477">rubyforge.org/tracker/index.php?func=detail&aid=18917&group_id=1917&atid=7477</a></p>
|
623
|
+
</li><li>
|
624
|
+
<p>18336 in revision 287 - <a
|
625
|
+
href="http://rubyforge.org/tracker/index.php?func=detail&aid=18336&group_id=1917&atid=7477">rubyforge.org/tracker/index.php?func=detail&aid=18336&group_id=1917&atid=7477</a></p>
|
626
|
+
</li><li>
|
627
|
+
<p>17835 in revision 255 - <a
|
628
|
+
href="http://rubyforge.org/tracker/index.php?func=detail&aid=17835&group_id=1917&atid=7477">rubyforge.org/tracker/index.php?func=detail&aid=17835&group_id=1917&atid=7477</a></p>
|
629
|
+
</li><li>
|
630
|
+
<p>17412 in revision 242 - <a
|
631
|
+
href="http://rubyforge.org/tracker/index.php?func=detail&aid=17412&group_id=1917&atid=7477">rubyforge.org/tracker/index.php?func=detail&aid=17412&group_id=1917&atid=7477</a></p>
|
632
|
+
</li><li>
|
633
|
+
<p>15977 in revision 198 - <a
|
634
|
+
href="http://rubyforge.org/tracker/index.php?func=detail&aid=15977&group_id=1917&atid=7477">rubyforge.org/tracker/index.php?func=detail&aid=15977&group_id=1917&atid=7477</a></p>
|
635
|
+
</li><li>
|
636
|
+
<p>11885 in revision 156 - <a
|
637
|
+
href="http://rubyforge.org/tracker/index.php?func=detail&aid=11885&group_id=1917&atid=7477">rubyforge.org/tracker/index.php?func=detail&aid=11885&group_id=1917&atid=7477</a></p>
|
638
|
+
</li></ul>
|
639
|
+
</li></ul>
|
640
|
+
|
641
|
+
<h1>0.5.5 (r167)</h1>
|
642
|
+
<ul><li>
|
643
|
+
<p>Renamed Matches parameter matcher to RegexpMatches for clarity.</p>
|
644
|
+
</li><li>
|
645
|
+
<p>Added noframes tag to rdoc index to assist Google.</p>
|
646
|
+
</li></ul>
|
647
|
+
|
648
|
+
<h1>0.5.4 (r166)</h1>
|
649
|
+
<ul><li>
|
650
|
+
<p>Added matches parameter matcher for matching regular expressions.</p>
|
651
|
+
</li></ul>
|
652
|
+
|
653
|
+
<h1>0.5.3 (r165)</h1>
|
654
|
+
<ul><li>
|
655
|
+
<p>Attempt to fix packaging problems by switching to newer version (1.15.1) of
|
656
|
+
gnutar and setting COPY_EXTENDED_ATTRIBUTES_DISABLE environment variable.</p>
|
657
|
+
</li><li>
|
658
|
+
<p>Removed unused ExpectationSequenceError exception.</p>
|
659
|
+
</li><li>
|
660
|
+
<p>Added instance_of and kind_of parameter matchers.</p>
|
661
|
+
</li><li>
|
662
|
+
<p>Added Google Webmaster meta tag to rdoc template header.</p>
|
663
|
+
</li><li>
|
664
|
+
<p>Put Google Webmaster meta tag in the right header i.e. the one for the
|
665
|
+
index page.</p>
|
666
|
+
</li></ul>
|
667
|
+
|
668
|
+
<h1>0.5.2 (r159)</h1>
|
669
|
+
<ul><li>
|
670
|
+
<p>Fix bug 11885 - “never doesn’t work with stub_everything” submitted by
|
671
|
+
Alexander Lang. In fixing this bug, also fixed undiscoverd bug where
|
672
|
+
expected & actual invocation counts were being incorrectly reported
|
673
|
+
which seems to have been introduced when fixes were added for invocation
|
674
|
+
dispatch (see MockedMethodDispatchAcceptanceTest).</p>
|
675
|
+
</li><li>
|
676
|
+
<p>Previously when an expectation did not allow more invocations, it was
|
677
|
+
treated as not matching. Now we prefer matching expectations which allow
|
678
|
+
more invocations, but still match expectations which cannot allow more
|
679
|
+
invocations. I think this may be overcomplicating things, but let’s see how
|
680
|
+
it goes.</p>
|
681
|
+
</li></ul>
|
682
|
+
|
683
|
+
<h1>0.5.1 (r149)</h1>
|
684
|
+
<ul><li>
|
685
|
+
<p>Fixed bug #11583 “Mocha 0.5.0 throwing unexpected warnings”. Also switched
|
686
|
+
on ruby warning for all rake test tasks. Fixed majority of warnings, but
|
687
|
+
some left to fix.</p>
|
688
|
+
</li></ul>
|
689
|
+
|
690
|
+
<h1>0.5.0 (r147)</h1>
|
691
|
+
<ul><li>
|
692
|
+
<p>Parameter Matchers - I’ve added a few Hamcrest-style parameter matchers
|
693
|
+
which are designed to be used inside Expectation#with. The following
|
694
|
+
matchers are currently available: anything(), includes(), has_key(),
|
695
|
+
has_value(), has_entry(), all_of() & any_of(). More to follow soon. The
|
696
|
+
idea is eventually to get rid of the nasty parameter_block option on
|
697
|
+
Expectation#with.</p>
|
698
|
+
|
699
|
+
<p>object = mock() object.expects(:method).with(has_key(‘key_1’))
|
700
|
+
object.method(‘key_1’ => 1, ‘key_2’ => 2) # no verification error
|
701
|
+
raised</p>
|
702
|
+
|
703
|
+
<p>object = mock() object.expects(:method).with(has_key(‘key_1’))
|
704
|
+
object.method(‘key_2’ => 2) # verification error raised, because method
|
705
|
+
was not called with Hash containing key: ‘key_1’</p>
|
706
|
+
</li><li>
|
707
|
+
<p>Values Returned and Exceptions Raised on Consecutive Invocations - Allow
|
708
|
+
multiple calls to Expectation#returns and Expectation#raises to build up a
|
709
|
+
sequence of responses to invocations on the mock. Added syntactic sugar
|
710
|
+
method Expectation#then to allow more readable expectations.</p>
|
711
|
+
|
712
|
+
<p>object = mock() object.stubs(:method).returns(1,
|
713
|
+
2).then.raises(Exception).then.returns(4) object.method # => 1
|
714
|
+
object.method # => 2 object.method # => raises exception of class
|
715
|
+
Exception object.method # => 4</p>
|
716
|
+
</li><li>
|
717
|
+
<p>Yields on Consecutive Invocations - Allow multiple calls to yields on
|
718
|
+
single expectation to allow yield parameters to be specified for
|
719
|
+
consecutive invocations.</p>
|
720
|
+
|
721
|
+
<p>object = mock() object.stubs(:method).yields(1, 2).then.yields(3)
|
722
|
+
object.method { |*values| p values } # => [1, 2] object.method {
|
723
|
+
|*values| p values } # => [3]</p>
|
724
|
+
</li><li>
|
725
|
+
<p>Multiple Yields on Single Invocation - Added Expectation#multiple_yields to
|
726
|
+
allow a mocked or stubbed method to yield multiple times for a single
|
727
|
+
invocation.</p>
|
728
|
+
|
729
|
+
<p>object = mock() object.stubs(:method).multiple_yields([1, 2], [3])
|
730
|
+
object.method { |*values| p values } # => [1, 2] # => [3]</p>
|
731
|
+
</li><li>
|
732
|
+
<p>Invocation Dispatch - Expectations were already being matched in reverse
|
733
|
+
order i.e. the most recently defined one was being found first. This is
|
734
|
+
still the case, but we now stop matching an expectation when its maximum
|
735
|
+
number of expected invocations is reached. c.f. JMock v1. A stub will never
|
736
|
+
stop matching by default. Hopefully this means we can soon get rid of the
|
737
|
+
need to pass a Proc to Expectation#returns.</p>
|
738
|
+
|
739
|
+
<p>object = mock() object.stubs(:method).returns(2)
|
740
|
+
object.expects(:method).once.returns(1) object.method # => 1
|
741
|
+
object.method # => 2 object.method # => 2 # no verification error
|
742
|
+
raised</p>
|
743
|
+
|
744
|
+
<p># The following should still work…</p>
|
745
|
+
|
746
|
+
<p>Time.stubs(:now).returns(Time.parse(‘Mon Jan 01 00:00:00 UTC 2007’))
|
747
|
+
Time.now # => Mon Jan 01 00:00:00 UTC 2007
|
748
|
+
Time.stubs(:now).returns(Time.parse(‘Thu Feb 01 00:00:00 UTC 2007’))
|
749
|
+
Time.now # => Thu Feb 01 00:00:00 UTC 2007</p>
|
750
|
+
</li><li>
|
751
|
+
<p>Deprecate passing an instance of Proc to Expectation#returns.</p>
|
752
|
+
</li><li>
|
753
|
+
<p>Explicitly include all Rakefile dependencies in project.</p>
|
754
|
+
</li><li>
|
755
|
+
<p>Fixed old Stubba example.</p>
|
756
|
+
</li><li>
|
757
|
+
<p>Fix so that it is possible for a stubbed method to raise an Interrupt
|
758
|
+
exception without a message in Ruby 1.8.6</p>
|
759
|
+
</li><li>
|
760
|
+
<p>Added responds_like and quacks_like.</p>
|
761
|
+
</li><li>
|
762
|
+
<p>Capture standard object methods before Mocha adds any.</p>
|
763
|
+
</li><li>
|
764
|
+
<p>Added Expectation#once method to make interface less surprising.</p>
|
765
|
+
</li><li>
|
766
|
+
<p>Use Rake::TestTask to run tests. Created three separate tasks to run unit,
|
767
|
+
integration & acceptance tests. Split inspect_test into one file per
|
768
|
+
TestCase. Deleted superfluous all_tests file.</p>
|
769
|
+
</li><li>
|
770
|
+
<p>Fiddled with mocha_inspect and tests to give more sensible results on x86
|
771
|
+
platform.</p>
|
772
|
+
</li><li>
|
773
|
+
<p>Fixed bug #7834 “infinite_range.rb makes incorrect assumption about to_f”
|
774
|
+
logged by James Moore.</p>
|
775
|
+
</li></ul>
|
776
|
+
|
777
|
+
<h1>0.4.0 (r92)</h1>
|
778
|
+
<ul><li>
|
779
|
+
<p>Allow naming of mocks (patch from Chris Roos).</p>
|
780
|
+
</li><li>
|
781
|
+
<p>Specify multiple return values for consecutive calls.</p>
|
782
|
+
</li><li>
|
783
|
+
<p>Improved consistency of expectation error messages.</p>
|
784
|
+
</li><li>
|
785
|
+
<p>Allow mocking of Object instance methods e.g. kind_of?, type.</p>
|
786
|
+
</li><li>
|
787
|
+
<p>Provide aliased versions of #expects and #stubs to allow mocking of these
|
788
|
+
methods.</p>
|
789
|
+
</li><li>
|
790
|
+
<p>Added at_least, at_most, at_most_once methods to expectation.</p>
|
791
|
+
</li><li>
|
792
|
+
<p>Allow expects and stubs to take a hash of method and return values.</p>
|
793
|
+
</li><li>
|
794
|
+
<p>Eliminate warning: “instance variable @yield not initialized” (patch from
|
795
|
+
Xavier Shay).</p>
|
796
|
+
</li><li>
|
797
|
+
<p>Restore instance methods on partial mocks (patch from Chris Roos).</p>
|
798
|
+
</li><li>
|
799
|
+
<p>Allow stubbing of a method with non-word characters in its name (patch from
|
800
|
+
Paul Battley).</p>
|
801
|
+
</li><li>
|
802
|
+
<p>Removed coupling to Test::Unit.</p>
|
803
|
+
</li><li>
|
804
|
+
<p>Allow specified exception instance to be raised (patch from Chris Roos).</p>
|
805
|
+
</li><li>
|
806
|
+
<p>Make mock object_id appear in hex like normal Ruby inspect (patch from Paul
|
807
|
+
Battley).</p>
|
808
|
+
</li><li>
|
809
|
+
<p>Fix path to object.rb in rdoc rake task (patch from Tomas Pospisek).</p>
|
810
|
+
</li><li>
|
811
|
+
<p>Reverse order in which expectations are matched, so that last expectation
|
812
|
+
is matched first. This allows e.g. a call to #stubs to be effectively
|
813
|
+
overridden by a call to #expects (patch from Tobias Lutke).</p>
|
814
|
+
</li><li>
|
815
|
+
<p>Stubba & SmartTestCase modules incorporated into Mocha module so only
|
816
|
+
need to require ‘mocha’ - no longer need to require ‘stubba’.</p>
|
817
|
+
</li><li>
|
818
|
+
<p>AutoMocha removed.</p>
|
819
|
+
</li></ul>
|
820
|
+
|
821
|
+
<h1>0.3.3</h1>
|
822
|
+
<ul><li>
|
823
|
+
<p>Quick bug fix to restore instance methods on partial mocks (for Kevin
|
824
|
+
Clark).</p>
|
825
|
+
</li></ul>
|
826
|
+
|
827
|
+
<h1>0.3.2</h1>
|
828
|
+
<ul><li>
|
829
|
+
<p>Examples added.</p>
|
830
|
+
</li></ul>
|
831
|
+
|
832
|
+
<h1>0.3.1</h1>
|
833
|
+
<ul><li>
|
834
|
+
<p>Dual licensing with MIT license added.</p>
|
835
|
+
</li></ul>
|
836
|
+
|
837
|
+
<h1>0.3.0</h1>
|
838
|
+
<ul><li>
|
839
|
+
<p>Rails plugin.</p>
|
840
|
+
</li><li>
|
841
|
+
<p>Auto-verify for expectations on concrete classes.</p>
|
842
|
+
</li><li>
|
843
|
+
<p>Include each expectation verification in the test result assertion count.</p>
|
844
|
+
</li><li>
|
845
|
+
<p>Filter out noise from assertion backtraces.</p>
|
846
|
+
</li><li>
|
847
|
+
<p>Point assertion backtrace to line where failing expectation was created.</p>
|
848
|
+
</li><li>
|
849
|
+
<p>New yields method for expectations.</p>
|
850
|
+
</li><li>
|
851
|
+
<p>Create stubs which stub all method calls.</p>
|
852
|
+
</li><li>
|
853
|
+
<p>Mocks now respond_to? expected methods.</p>
|
854
|
+
</li></ul>
|
855
|
+
|
856
|
+
<h1>0.2.1</h1>
|
857
|
+
<ul><li>
|
858
|
+
<p>Rename MochaAcceptanceTest::Rover#move method to avoid conflict with Rake
|
859
|
+
(in Ruby 1.8.4 only?)</p>
|
860
|
+
</li></ul>
|
861
|
+
|
862
|
+
<h1>0.2.0</h1>
|
863
|
+
<ul><li>
|
864
|
+
<p>Small change to SetupAndTeardown#teardown_stubs suggested by Luke Redpath
|
865
|
+
(<a href="http://www.lukeredpath.co.uk">www.lukeredpath.co.uk</a>) to allow
|
866
|
+
use of Stubba with RSpec (<a
|
867
|
+
href="http://rspec.rubyforge.org">rspec.rubyforge.org</a>).</p>
|
868
|
+
</li><li>
|
869
|
+
<p>Reorganized directory structure and extracted addition of setup and
|
870
|
+
teardown methods into SmartTestCase mini-library.</p>
|
871
|
+
</li><li>
|
872
|
+
<p>Addition of auto-verify for Mocha (but not Stubba). This means there is
|
873
|
+
more significance in the choice of expects or stubs in that any expects on
|
874
|
+
a mock will automatically get verified.</p>
|
875
|
+
</li></ul>
|
876
|
+
|
877
|
+
<p>So instead of…</p>
|
878
|
+
|
879
|
+
<pre class="code ruby"><code><span class='id identifier rubyid_wotsit'>wotsit</span> <span class='op'>=</span> <span class='const'>Mocha</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
880
|
+
<span class='id identifier rubyid_wotsit'>wotsit</span><span class='period'>.</span><span class='id identifier rubyid_expects'>expects</span><span class='lparen'>(</span><span class='symbol'>:thingummy</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_with'>with</span><span class='lparen'>(</span><span class='int'>5</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_returns'>returns</span><span class='lparen'>(</span><span class='int'>10</span><span class='rparen'>)</span>
|
881
|
+
<span class='id identifier rubyid_doobrey'>doobrey</span> <span class='op'>=</span> <span class='const'>Doobrey</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_wotsit'>wotsit</span><span class='rparen'>)</span>
|
882
|
+
<span class='id identifier rubyid_doobrey'>doobrey</span><span class='period'>.</span><span class='id identifier rubyid_hoojamaflip'>hoojamaflip</span>
|
883
|
+
<span class='id identifier rubyid_wotsit'>wotsit</span><span class='period'>.</span><span class='id identifier rubyid_verify'>verify</span></code></pre>
|
884
|
+
|
885
|
+
<p>you need to do…</p>
|
886
|
+
|
887
|
+
<pre class="code ruby"><code><span class='id identifier rubyid_wotsit'>wotsit</span> <span class='op'>=</span> <span class='id identifier rubyid_mock'>mock</span><span class='lparen'>(</span><span class='rparen'>)</span>
|
888
|
+
<span class='id identifier rubyid_wotsit'>wotsit</span><span class='period'>.</span><span class='id identifier rubyid_expects'>expects</span><span class='lparen'>(</span><span class='symbol'>:thingummy</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_with'>with</span><span class='lparen'>(</span><span class='int'>5</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_returns'>returns</span><span class='lparen'>(</span><span class='int'>10</span><span class='rparen'>)</span>
|
889
|
+
<span class='id identifier rubyid_doobrey'>doobrey</span> <span class='op'>=</span> <span class='const'>Doobrey</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_wotsit'>wotsit</span><span class='rparen'>)</span>
|
890
|
+
<span class='id identifier rubyid_doobrey'>doobrey</span><span class='period'>.</span><span class='id identifier rubyid_hoojamaflip'>hoojamaflip</span>
|
891
|
+
<span class='comment'># no need to verify</span></code></pre>
|
892
|
+
|
893
|
+
<p>There are also shortcuts as follows…</p>
|
894
|
+
|
895
|
+
<p>instead of…</p>
|
896
|
+
|
897
|
+
<pre class="code ruby"><code><span class='id identifier rubyid_wotsit'>wotsit</span> <span class='op'>=</span> <span class='const'>Mocha</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
898
|
+
<span class='id identifier rubyid_wotsit'>wotsit</span><span class='period'>.</span><span class='id identifier rubyid_expects'>expects</span><span class='lparen'>(</span><span class='symbol'>:thingummy</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_returns'>returns</span><span class='lparen'>(</span><span class='int'>10</span><span class='rparen'>)</span>
|
899
|
+
<span class='id identifier rubyid_wotsit'>wotsit</span><span class='period'>.</span><span class='id identifier rubyid_expects'>expects</span><span class='lparen'>(</span><span class='symbol'>:summat</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_returns'>returns</span><span class='lparen'>(</span><span class='int'>25</span><span class='rparen'>)</span></code></pre>
|
900
|
+
|
901
|
+
<p>you can have…</p>
|
902
|
+
|
903
|
+
<pre class="code ruby"><code><span class='id identifier rubyid_wotsit'>wotsit</span> <span class='op'>=</span> <span class='id identifier rubyid_mock'>mock</span><span class='lparen'>(</span><span class='symbol'>:thingummy</span> <span class='op'>=></span> <span class='int'>5</span><span class='comma'>,</span> <span class='symbol'>:summat</span> <span class='op'>=></span> <span class='int'>25</span><span class='rparen'>)</span></code></pre>
|
904
|
+
|
905
|
+
<p>and instead of…</p>
|
906
|
+
|
907
|
+
<pre class="code ruby"><code><span class='id identifier rubyid_wotsit'>wotsit</span> <span class='op'>=</span> <span class='const'>Mocha</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
908
|
+
<span class='id identifier rubyid_wotsit'>wotsit</span><span class='period'>.</span><span class='id identifier rubyid_stubs'>stubs</span><span class='lparen'>(</span><span class='symbol'>:thingummy</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_returns'>returns</span><span class='lparen'>(</span><span class='int'>10</span><span class='rparen'>)</span>
|
909
|
+
<span class='id identifier rubyid_wotsit'>wotsit</span><span class='period'>.</span><span class='id identifier rubyid_stubs'>stubs</span><span class='lparen'>(</span><span class='symbol'>:summat</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_returns'>returns</span><span class='lparen'>(</span><span class='int'>25</span><span class='rparen'>)</span></code></pre>
|
910
|
+
|
911
|
+
<p>you can have…</p>
|
912
|
+
|
913
|
+
<pre class="code ruby"><code><span class='id identifier rubyid_wotsit'>wotsit</span> <span class='op'>=</span> <span class='id identifier rubyid_stub'>stub</span><span class='lparen'>(</span><span class='symbol'>:thingummy</span> <span class='op'>=></span> <span class='int'>5</span><span class='comma'>,</span> <span class='symbol'>:summat</span> <span class='op'>=></span> <span class='int'>25</span><span class='rparen'>)</span></code></pre>
|
914
|
+
|
915
|
+
<h1>0.1.2</h1>
|
916
|
+
<ul><li>
|
917
|
+
<p>Minor tweaks</p>
|
918
|
+
</li></ul>
|
919
|
+
|
920
|
+
<h1>0.1.1</h1>
|
921
|
+
<ul><li>
|
922
|
+
<p>Initial release.</p>
|
923
|
+
</li></ul>
|
924
|
+
</div></div>
|
925
|
+
|
926
|
+
<div id="footer">
|
927
|
+
Generated on Thu Apr 19 10:54:33 2012 by
|
928
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
929
|
+
0.7.5 (ruby-1.9.3).
|
930
|
+
</div>
|
931
|
+
|
932
|
+
</body>
|
933
|
+
</html>
|