RSpec-Steps 0.0.1

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.
Files changed (129) hide show
  1. data/doc/README +2 -0
  2. data/doc/Specifications +17 -0
  3. data/doc/coverage/index.html +154 -0
  4. data/doc/coverage/jquery-1.3.2.min.js +19 -0
  5. data/doc/coverage/jquery.tablesorter.min.js +15 -0
  6. data/doc/coverage/lib-rspec-steps-duckpunch-example-group_rb.html +129 -0
  7. data/doc/coverage/lib-rspec-steps-duckpunch-object-extensions_rb.html +123 -0
  8. data/doc/coverage/lib-rspec-steps-stepwise_rb.html +297 -0
  9. data/doc/coverage/lib-rspec-steps_rb.html +81 -0
  10. data/doc/coverage/print.css +12 -0
  11. data/doc/coverage/rcov-ruby-1_8-gems-diff-lcs-1_1_2-lib-diff-lcs-block_rb.html +369 -0
  12. data/doc/coverage/rcov-ruby-1_8-gems-diff-lcs-1_1_2-lib-diff-lcs-callbacks_rb.html +1995 -0
  13. data/doc/coverage/rcov-ruby-1_8-gems-diff-lcs-1_1_2-lib-diff-lcs-change_rb.html +1077 -0
  14. data/doc/coverage/rcov-ruby-1_8-gems-diff-lcs-1_1_2-lib-diff-lcs-hunk_rb.html +1605 -0
  15. data/doc/coverage/rcov-ruby-1_8-gems-diff-lcs-1_1_2-lib-diff-lcs_rb.html +6693 -0
  16. data/doc/coverage/rcov-ruby-1_8-gems-rcov-0_9_9-lib-rcov-code_coverage_analyzer_rb.html +1689 -0
  17. data/doc/coverage/rcov-ruby-1_8-gems-rcov-0_9_9-lib-rcov-differential_analyzer_rb.html +759 -0
  18. data/doc/coverage/rcov-ruby-1_8-gems-rspec-2_5_0-lib-rspec-version_rb.html +93 -0
  19. data/doc/coverage/rcov-ruby-1_8-gems-rspec-2_5_0-lib-rspec_rb.html +87 -0
  20. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-backward_compatibility_rb.html +351 -0
  21. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-command_line_configuration_rb.html +435 -0
  22. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-command_line_rb.html +273 -0
  23. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-configuration_options_rb.html +819 -0
  24. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-configuration_rb.html +2883 -0
  25. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-deprecation_rb.html +333 -0
  26. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-drb_command_line_rb.html +237 -0
  27. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-errors_rb.html +147 -0
  28. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-example_group_rb.html +1863 -0
  29. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-example_rb.html +1065 -0
  30. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-expecting-with_rspec_rb.html +129 -0
  31. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-extensions-instance_eval_with_args_rb.html +297 -0
  32. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-extensions-kernel_rb.html +93 -0
  33. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-extensions-module_eval_with_args_rb.html +267 -0
  34. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-extensions-object_rb.html +147 -0
  35. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-extensions_rb.html +87 -0
  36. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-formatters-base_formatter_rb.html +1035 -0
  37. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-formatters-base_text_formatter_rb.html +1053 -0
  38. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-formatters-documentation_formatter_rb.html +489 -0
  39. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-formatters-helpers_rb.html +231 -0
  40. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-hooks_rb.html +957 -0
  41. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-let_rb.html +669 -0
  42. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-load_path_rb.html +81 -0
  43. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-metadata_rb.html +1185 -0
  44. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-mocking-with_rspec_rb.html +189 -0
  45. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-option_parser_rb.html +855 -0
  46. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-pending_rb.html +243 -0
  47. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-reporter_rb.html +537 -0
  48. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-ruby_project_rb.html +327 -0
  49. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-runner_rb.html +429 -0
  50. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-shared_context_rb.html +159 -0
  51. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-shared_example_group_rb.html +381 -0
  52. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-subject_rb.html +1125 -0
  53. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-version_rb.html +105 -0
  54. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core-world_rb.html +675 -0
  55. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-core_rb.html +453 -0
  56. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-monkey-spork-test_framework-rspec_rb.html +105 -0
  57. data/doc/coverage/rcov-ruby-1_8-gems-rspec-core-2_5_1-lib-rspec-monkey_rb.html +69 -0
  58. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-expectations-backward_compatibility_rb.html +159 -0
  59. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-expectations-deprecation_rb.html +279 -0
  60. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-expectations-differ_rb.html +435 -0
  61. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-expectations-errors_rb.html +135 -0
  62. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-expectations-extensions-array_rb.html +105 -0
  63. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-expectations-extensions-kernel_rb.html +375 -0
  64. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-expectations-extensions_rb.html +75 -0
  65. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-expectations-fail_with_rb.html +369 -0
  66. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-expectations-handler_rb.html +363 -0
  67. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-expectations-version_rb.html +105 -0
  68. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-expectations_rb.html +297 -0
  69. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-be_close_rb.html +165 -0
  70. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-be_instance_of_rb.html +219 -0
  71. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-be_kind_of_rb.html +219 -0
  72. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-be_rb.html +1395 -0
  73. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-be_within_rb.html +303 -0
  74. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-block_aliases_rb.html +177 -0
  75. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-change_rb.html +1203 -0
  76. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-compatibility_rb.html +147 -0
  77. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-dsl_rb.html +189 -0
  78. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-eq_rb.html +363 -0
  79. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-eql_rb.html +333 -0
  80. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-equal_rb.html +381 -0
  81. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-errors_rb.html +93 -0
  82. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-exist_rb.html +219 -0
  83. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-extensions-instance_exec_rb.html +249 -0
  84. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-generated_descriptions_rb.html +279 -0
  85. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-has_rb.html +273 -0
  86. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-have_rb.html +969 -0
  87. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-include_rb.html +387 -0
  88. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-match_array_rb.html +489 -0
  89. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-match_rb.html +189 -0
  90. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-matcher_rb.html +1029 -0
  91. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-method_missing_rb.html +135 -0
  92. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-operator_matcher_rb.html +585 -0
  93. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-pretty_rb.html +285 -0
  94. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-raise_error_rb.html +843 -0
  95. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-respond_to_rb.html +573 -0
  96. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-satisfy_rb.html +369 -0
  97. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers-throw_symbol_rb.html +789 -0
  98. data/doc/coverage/rcov-ruby-1_8-gems-rspec-expectations-2_5_0-lib-rspec-matchers_rb.html +1239 -0
  99. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-argument_expectation_rb.html +381 -0
  100. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-argument_matchers_rb.html +1461 -0
  101. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-error_generator_rb.html +645 -0
  102. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-errors_rb.html +123 -0
  103. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-extensions-instance_exec_rb.html +249 -0
  104. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-extensions-marshal_rb.html +225 -0
  105. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-framework_rb.html +165 -0
  106. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-message_expectation_rb.html +2169 -0
  107. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-method_double_rb.html +1053 -0
  108. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-methods_rb.html +663 -0
  109. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-mock_rb.html +537 -0
  110. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-order_group_rb.html +237 -0
  111. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-proxy_rb.html +1011 -0
  112. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-serialization_rb.html +219 -0
  113. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-space_rb.html +231 -0
  114. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-spec_methods_rb.html +381 -0
  115. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-version_rb.html +105 -0
  116. data/doc/coverage/rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks_rb.html +1239 -0
  117. data/doc/coverage/rcov.js +42 -0
  118. data/doc/coverage/screen.css +270 -0
  119. data/lib/rspec-steps.rb +3 -0
  120. data/lib/rspec-steps/duckpunch/example-group.rb +11 -0
  121. data/lib/rspec-steps/duckpunch/object-extensions.rb +10 -0
  122. data/lib/rspec-steps/stepwise.rb +39 -0
  123. data/spec/example_group.rb +75 -0
  124. data/spec_help/file-sandbox.rb +164 -0
  125. data/spec_help/gem_test_suite.rb +17 -0
  126. data/spec_help/rspec-sandbox.rb +86 -0
  127. data/spec_help/spec_helper.rb +4 -0
  128. data/spec_help/ungemmer.rb +36 -0
  129. metadata +423 -0
@@ -0,0 +1,105 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
3
+ <head>
4
+ <title>rcov/ruby/1.8/gems/rspec-mocks-2.5.0/lib/rspec/mocks/version.rb</title>
5
+ <link href="screen.css" media="all" rel="stylesheet" type="text/css" />
6
+ <link href="print.css" media="print" rel="stylesheet" type="text/css" />
7
+
8
+ <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
9
+ <script type="text/javascript" src="rcov.js"></script>
10
+ </head>
11
+ <body>
12
+ <h1>Rspec Steps C0 Coverage Information - RCov</h1>
13
+ <h2>rcov/ruby/1.8/gems/rspec-mocks-2.5.0/lib/rspec/mocks/version.rb</h2>
14
+
15
+
16
+
17
+ <div class="report_table_wrapper">
18
+ <table class='report' id='report_table'>
19
+ <thead>
20
+ <tr>
21
+ <th class="left_align">Name</th>
22
+ <th class="right_align">Total Lines</th>
23
+ <th class="right_align">Lines of Code</th>
24
+ <th class="left_align">Total Coverage</th>
25
+ <th class="left_align">Code Coverage</th>
26
+ </tr>
27
+ </thead>
28
+ <tbody>
29
+ <tr>
30
+ <td class="left_align"><a href="rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks-version_rb.html">rcov/ruby/1.8/gems/rspec-mocks-2.5.0/lib/rspec/mocks/version.rb</a></td>
31
+ <td class='right_align'><tt>7</tt></td>
32
+ <td class='right_align'><tt>7</tt></td>
33
+ <td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
34
+ <div class="percent_graph">
35
+ <div class="covered" style="width:100px"></div>
36
+ <div class="uncovered" style="width:0px"></div>
37
+ </div></td>
38
+ <td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
39
+ <div class="percent_graph">
40
+ <div class="covered" style="width:100px"></div>
41
+ <div class="uncovered" style="width:0px"></div>
42
+ </div></td>
43
+ </tr>
44
+ </tbody>
45
+ </table>
46
+ </div>
47
+
48
+ <h3>Key</h3>
49
+
50
+ <div class="key"><pre><span class='marked'>Code reported as executed by Ruby looks like this...</span><span class='marked1'>and this: this line is also marked as covered.</span><span class='inferred'>Lines considered as run by rcov, but not reported by Ruby, look like this,</span><span class='inferred1'>and this: these lines were inferred by rcov (using simple heuristics).</span><span class='uncovered'>Finally, here's a line marked as not executed.</span></pre></div>
51
+
52
+ <h3>Coverage Details</h3>
53
+
54
+ <table class="details">
55
+ <tbody>
56
+
57
+
58
+
59
+ <tr class="marked">
60
+ <td><pre><a name="line1">1</a> module RSpec # :nodoc:</pre></td>
61
+ </tr>
62
+
63
+
64
+
65
+ <tr class="marked">
66
+ <td><pre><a name="line2">2</a> module Mocks # :nodoc:</pre></td>
67
+ </tr>
68
+
69
+
70
+
71
+ <tr class="marked">
72
+ <td><pre><a name="line3">3</a> module Version # :nodoc:</pre></td>
73
+ </tr>
74
+
75
+
76
+
77
+ <tr class="marked">
78
+ <td><pre><a name="line4">4</a> STRING = '2.5.0'</pre></td>
79
+ </tr>
80
+
81
+
82
+
83
+ <tr class="inferred">
84
+ <td><pre><a name="line5">5</a> end</pre></td>
85
+ </tr>
86
+
87
+
88
+
89
+ <tr class="inferred">
90
+ <td><pre><a name="line6">6</a> end</pre></td>
91
+ </tr>
92
+
93
+
94
+
95
+ <tr class="inferred">
96
+ <td><pre><a name="line7">7</a> end</pre></td>
97
+ </tr>
98
+
99
+ </tbody>
100
+ </table>
101
+
102
+ <p>Generated on Fri Apr 22 17:22:42 -0700 2011 with <a href="http://github.com/relevance/rcov">rcov 0.9.8</a></p>
103
+
104
+ </body>
105
+ </html>
@@ -0,0 +1,1239 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
3
+ <head>
4
+ <title>rcov/ruby/1.8/gems/rspec-mocks-2.5.0/lib/rspec/mocks.rb</title>
5
+ <link href="screen.css" media="all" rel="stylesheet" type="text/css" />
6
+ <link href="print.css" media="print" rel="stylesheet" type="text/css" />
7
+
8
+ <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
9
+ <script type="text/javascript" src="rcov.js"></script>
10
+ </head>
11
+ <body>
12
+ <h1>Rspec Steps C0 Coverage Information - RCov</h1>
13
+ <h2>rcov/ruby/1.8/gems/rspec-mocks-2.5.0/lib/rspec/mocks.rb</h2>
14
+
15
+
16
+
17
+ <div class="report_table_wrapper">
18
+ <table class='report' id='report_table'>
19
+ <thead>
20
+ <tr>
21
+ <th class="left_align">Name</th>
22
+ <th class="right_align">Total Lines</th>
23
+ <th class="right_align">Lines of Code</th>
24
+ <th class="left_align">Total Coverage</th>
25
+ <th class="left_align">Code Coverage</th>
26
+ </tr>
27
+ </thead>
28
+ <tbody>
29
+ <tr>
30
+ <td class="left_align"><a href="rcov-ruby-1_8-gems-rspec-mocks-2_5_0-lib-rspec-mocks_rb.html">rcov/ruby/1.8/gems/rspec-mocks-2.5.0/lib/rspec/mocks.rb</a></td>
31
+ <td class='right_align'><tt>196</tt></td>
32
+ <td class='right_align'><tt>23</tt></td>
33
+ <td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
34
+ <div class="percent_graph">
35
+ <div class="covered" style="width:100px"></div>
36
+ <div class="uncovered" style="width:0px"></div>
37
+ </div></td>
38
+ <td class="left_align"><div class="percent_graph_legend"><tt class=''>100.00%</tt></div>
39
+ <div class="percent_graph">
40
+ <div class="covered" style="width:100px"></div>
41
+ <div class="uncovered" style="width:0px"></div>
42
+ </div></td>
43
+ </tr>
44
+ </tbody>
45
+ </table>
46
+ </div>
47
+
48
+ <h3>Key</h3>
49
+
50
+ <div class="key"><pre><span class='marked'>Code reported as executed by Ruby looks like this...</span><span class='marked1'>and this: this line is also marked as covered.</span><span class='inferred'>Lines considered as run by rcov, but not reported by Ruby, look like this,</span><span class='inferred1'>and this: these lines were inferred by rcov (using simple heuristics).</span><span class='uncovered'>Finally, here's a line marked as not executed.</span></pre></div>
51
+
52
+ <h3>Coverage Details</h3>
53
+
54
+ <table class="details">
55
+ <tbody>
56
+
57
+
58
+
59
+ <tr class="marked">
60
+ <td><pre><a name="line1">1</a> require 'rspec/mocks/framework'</pre></td>
61
+ </tr>
62
+
63
+
64
+
65
+ <tr class="marked">
66
+ <td><pre><a name="line2">2</a> require 'rspec/mocks/version'</pre></td>
67
+ </tr>
68
+
69
+
70
+
71
+ <tr class="marked">
72
+ <td><pre><a name="line3">3</a> require 'rspec/mocks/spec_methods'</pre></td>
73
+ </tr>
74
+
75
+
76
+
77
+ <tr class="inferred">
78
+ <td><pre><a name="line4">4</a> </pre></td>
79
+ </tr>
80
+
81
+
82
+
83
+ <tr class="marked">
84
+ <td><pre><a name="line5">5</a> module RSpec</pre></td>
85
+ </tr>
86
+
87
+
88
+
89
+ <tr class="inferred">
90
+ <td><pre><a name="line6">6</a> # == Test Doubles</pre></td>
91
+ </tr>
92
+
93
+
94
+
95
+ <tr class="inferred">
96
+ <td><pre><a name="line7">7</a> #</pre></td>
97
+ </tr>
98
+
99
+
100
+
101
+ <tr class="inferred">
102
+ <td><pre><a name="line8">8</a> # A Test Double is an object that stands in for a real object in a test.</pre></td>
103
+ </tr>
104
+
105
+
106
+
107
+ <tr class="inferred">
108
+ <td><pre><a name="line9">9</a> # RSpec creates test doubles that support method stubs and message</pre></td>
109
+ </tr>
110
+
111
+
112
+
113
+ <tr class="inferred">
114
+ <td><pre><a name="line10">10</a> # expectations.</pre></td>
115
+ </tr>
116
+
117
+
118
+
119
+ <tr class="inferred">
120
+ <td><pre><a name="line11">11</a> #</pre></td>
121
+ </tr>
122
+
123
+
124
+
125
+ <tr class="inferred">
126
+ <td><pre><a name="line12">12</a> # book = double(&quot;book&quot;)</pre></td>
127
+ </tr>
128
+
129
+
130
+
131
+ <tr class="inferred">
132
+ <td><pre><a name="line13">13</a> #</pre></td>
133
+ </tr>
134
+
135
+
136
+
137
+ <tr class="inferred">
138
+ <td><pre><a name="line14">14</a> # == Method Stubs</pre></td>
139
+ </tr>
140
+
141
+
142
+
143
+ <tr class="inferred">
144
+ <td><pre><a name="line15">15</a> #</pre></td>
145
+ </tr>
146
+
147
+
148
+
149
+ <tr class="inferred">
150
+ <td><pre><a name="line16">16</a> # A method stub is an implementation that returns a pre-determined value.</pre></td>
151
+ </tr>
152
+
153
+
154
+
155
+ <tr class="inferred">
156
+ <td><pre><a name="line17">17</a> #</pre></td>
157
+ </tr>
158
+
159
+
160
+
161
+ <tr class="inferred">
162
+ <td><pre><a name="line18">18</a> # book = double(&quot;book&quot;)</pre></td>
163
+ </tr>
164
+
165
+
166
+
167
+ <tr class="inferred">
168
+ <td><pre><a name="line19">19</a> # double.stub(:title) { &quot;The RSpec Book&quot; }</pre></td>
169
+ </tr>
170
+
171
+
172
+
173
+ <tr class="inferred">
174
+ <td><pre><a name="line20">20</a> # double.title =&gt; &quot;The RSpec Book&quot;</pre></td>
175
+ </tr>
176
+
177
+
178
+
179
+ <tr class="inferred">
180
+ <td><pre><a name="line21">21</a> #</pre></td>
181
+ </tr>
182
+
183
+
184
+
185
+ <tr class="inferred">
186
+ <td><pre><a name="line22">22</a> # When we declare a stub, we say we are &quot;stubbing&quot; a method.</pre></td>
187
+ </tr>
188
+
189
+
190
+
191
+ <tr class="inferred">
192
+ <td><pre><a name="line23">23</a> #</pre></td>
193
+ </tr>
194
+
195
+
196
+
197
+ <tr class="inferred">
198
+ <td><pre><a name="line24">24</a> # == Message Expectations</pre></td>
199
+ </tr>
200
+
201
+
202
+
203
+ <tr class="inferred">
204
+ <td><pre><a name="line25">25</a> #</pre></td>
205
+ </tr>
206
+
207
+
208
+
209
+ <tr class="inferred">
210
+ <td><pre><a name="line26">26</a> # A message expectation is an expectation that the test double will receive a</pre></td>
211
+ </tr>
212
+
213
+
214
+
215
+ <tr class="inferred">
216
+ <td><pre><a name="line27">27</a> # message some time before the example ends. If the message is received, the</pre></td>
217
+ </tr>
218
+
219
+
220
+
221
+ <tr class="inferred">
222
+ <td><pre><a name="line28">28</a> # expectation is satisfied. If not, the example fails.</pre></td>
223
+ </tr>
224
+
225
+
226
+
227
+ <tr class="inferred">
228
+ <td><pre><a name="line29">29</a> #</pre></td>
229
+ </tr>
230
+
231
+
232
+
233
+ <tr class="inferred">
234
+ <td><pre><a name="line30">30</a> # validator = double(&quot;validator&quot;)</pre></td>
235
+ </tr>
236
+
237
+
238
+
239
+ <tr class="inferred">
240
+ <td><pre><a name="line31">31</a> # validator.should_receive(:validate).with(&quot;02134&quot;)</pre></td>
241
+ </tr>
242
+
243
+
244
+
245
+ <tr class="inferred">
246
+ <td><pre><a name="line32">32</a> # zipcode = Zipcode.new(&quot;02134&quot;, validator)</pre></td>
247
+ </tr>
248
+
249
+
250
+
251
+ <tr class="inferred">
252
+ <td><pre><a name="line33">33</a> # zipcode.valid?</pre></td>
253
+ </tr>
254
+
255
+
256
+
257
+ <tr class="inferred">
258
+ <td><pre><a name="line34">34</a> # </pre></td>
259
+ </tr>
260
+
261
+
262
+
263
+ <tr class="inferred">
264
+ <td><pre><a name="line35">35</a> # When we declare a message expectation, we say we are &quot;mocking&quot; a method.</pre></td>
265
+ </tr>
266
+
267
+
268
+
269
+ <tr class="inferred">
270
+ <td><pre><a name="line36">36</a> #</pre></td>
271
+ </tr>
272
+
273
+
274
+
275
+ <tr class="inferred">
276
+ <td><pre><a name="line37">37</a> # == Mock Objects and Test Stubs</pre></td>
277
+ </tr>
278
+
279
+
280
+
281
+ <tr class="inferred">
282
+ <td><pre><a name="line38">38</a> #</pre></td>
283
+ </tr>
284
+
285
+
286
+
287
+ <tr class="inferred">
288
+ <td><pre><a name="line39">39</a> # The names Mock Object and Test Stub suggest specialized Test Doubles. i.e.</pre></td>
289
+ </tr>
290
+
291
+
292
+
293
+ <tr class="inferred">
294
+ <td><pre><a name="line40">40</a> # Test Stub evokes Test Double that only supports method stubs, and a Mock</pre></td>
295
+ </tr>
296
+
297
+
298
+
299
+ <tr class="inferred">
300
+ <td><pre><a name="line41">41</a> # Object evokes a Test Double that only supports message expectations, or</pre></td>
301
+ </tr>
302
+
303
+
304
+
305
+ <tr class="inferred">
306
+ <td><pre><a name="line42">42</a> # sometimes supports message expectations in addition to method stubs.</pre></td>
307
+ </tr>
308
+
309
+
310
+
311
+ <tr class="inferred">
312
+ <td><pre><a name="line43">43</a> #</pre></td>
313
+ </tr>
314
+
315
+
316
+
317
+ <tr class="inferred">
318
+ <td><pre><a name="line44">44</a> # There is a lot of overlapping nomenclature here, and there are many</pre></td>
319
+ </tr>
320
+
321
+
322
+
323
+ <tr class="inferred">
324
+ <td><pre><a name="line45">45</a> # variations of these patterns (fakes, spies, etc). Keep in mind that most of</pre></td>
325
+ </tr>
326
+
327
+
328
+
329
+ <tr class="inferred">
330
+ <td><pre><a name="line46">46</a> # the time we're talking about method-level concepts that are variations of</pre></td>
331
+ </tr>
332
+
333
+
334
+
335
+ <tr class="inferred">
336
+ <td><pre><a name="line47">47</a> # method stubs and message expectations, and we're applying to them to _one_</pre></td>
337
+ </tr>
338
+
339
+
340
+
341
+ <tr class="inferred">
342
+ <td><pre><a name="line48">48</a> # generic kind of object: a Test Double.</pre></td>
343
+ </tr>
344
+
345
+
346
+
347
+ <tr class="inferred">
348
+ <td><pre><a name="line49">49</a> #</pre></td>
349
+ </tr>
350
+
351
+
352
+
353
+ <tr class="inferred">
354
+ <td><pre><a name="line50">50</a> # == Test-Specific Extension</pre></td>
355
+ </tr>
356
+
357
+
358
+
359
+ <tr class="inferred">
360
+ <td><pre><a name="line51">51</a> #</pre></td>
361
+ </tr>
362
+
363
+
364
+
365
+ <tr class="inferred">
366
+ <td><pre><a name="line52">52</a> # a.k.a. Partial Stub/Mock, a Test-Specific Extension is an extension of a</pre></td>
367
+ </tr>
368
+
369
+
370
+
371
+ <tr class="inferred">
372
+ <td><pre><a name="line53">53</a> # real object in a system that is instrumented with test-double like</pre></td>
373
+ </tr>
374
+
375
+
376
+
377
+ <tr class="inferred">
378
+ <td><pre><a name="line54">54</a> # behaviour in the context of a test. This technique is very common in Ruby</pre></td>
379
+ </tr>
380
+
381
+
382
+
383
+ <tr class="inferred">
384
+ <td><pre><a name="line55">55</a> # because we often see class objects acting as global namespaces for methods.</pre></td>
385
+ </tr>
386
+
387
+
388
+
389
+ <tr class="inferred">
390
+ <td><pre><a name="line56">56</a> # For example, in Rails:</pre></td>
391
+ </tr>
392
+
393
+
394
+
395
+ <tr class="inferred">
396
+ <td><pre><a name="line57">57</a> #</pre></td>
397
+ </tr>
398
+
399
+
400
+
401
+ <tr class="inferred">
402
+ <td><pre><a name="line58">58</a> # person = double(&quot;person&quot;)</pre></td>
403
+ </tr>
404
+
405
+
406
+
407
+ <tr class="inferred">
408
+ <td><pre><a name="line59">59</a> # Person.stub(:find) { person }</pre></td>
409
+ </tr>
410
+
411
+
412
+
413
+ <tr class="inferred">
414
+ <td><pre><a name="line60">60</a> #</pre></td>
415
+ </tr>
416
+
417
+
418
+
419
+ <tr class="inferred">
420
+ <td><pre><a name="line61">61</a> # In this case we're instrumenting Person to return the person object we've</pre></td>
421
+ </tr>
422
+
423
+
424
+
425
+ <tr class="inferred">
426
+ <td><pre><a name="line62">62</a> # defined whenever it receives the +find+ message. We can do this with any</pre></td>
427
+ </tr>
428
+
429
+
430
+
431
+ <tr class="inferred">
432
+ <td><pre><a name="line63">63</a> # object in a system because RSpec adds the +stub+ and +should_receive+</pre></td>
433
+ </tr>
434
+
435
+
436
+
437
+ <tr class="inferred">
438
+ <td><pre><a name="line64">64</a> # methods to every object. When we use either, RSpec replaces the method</pre></td>
439
+ </tr>
440
+
441
+
442
+
443
+ <tr class="inferred">
444
+ <td><pre><a name="line65">65</a> # we're stubbing or mocking with it's own test-double-like method. At the</pre></td>
445
+ </tr>
446
+
447
+
448
+
449
+ <tr class="inferred">
450
+ <td><pre><a name="line66">66</a> # end of the example, RSpec verifies any message expectations, and then</pre></td>
451
+ </tr>
452
+
453
+
454
+
455
+ <tr class="inferred">
456
+ <td><pre><a name="line67">67</a> # restores the original methods.</pre></td>
457
+ </tr>
458
+
459
+
460
+
461
+ <tr class="inferred">
462
+ <td><pre><a name="line68">68</a> # </pre></td>
463
+ </tr>
464
+
465
+
466
+
467
+ <tr class="inferred">
468
+ <td><pre><a name="line69">69</a> # == Expecting Arguments</pre></td>
469
+ </tr>
470
+
471
+
472
+
473
+ <tr class="inferred">
474
+ <td><pre><a name="line70">70</a> #</pre></td>
475
+ </tr>
476
+
477
+
478
+
479
+ <tr class="inferred">
480
+ <td><pre><a name="line71">71</a> # double.should_receive(:msg).with(*args)</pre></td>
481
+ </tr>
482
+
483
+
484
+
485
+ <tr class="inferred">
486
+ <td><pre><a name="line72">72</a> # double.should_not_receive(:msg).with(*args)</pre></td>
487
+ </tr>
488
+
489
+
490
+
491
+ <tr class="inferred">
492
+ <td><pre><a name="line73">73</a> #</pre></td>
493
+ </tr>
494
+
495
+
496
+
497
+ <tr class="inferred">
498
+ <td><pre><a name="line74">74</a> # == Argument Matchers</pre></td>
499
+ </tr>
500
+
501
+
502
+
503
+ <tr class="inferred">
504
+ <td><pre><a name="line75">75</a> #</pre></td>
505
+ </tr>
506
+
507
+
508
+
509
+ <tr class="inferred">
510
+ <td><pre><a name="line76">76</a> # Arguments that are passed to #with are compared with actual arguments received</pre></td>
511
+ </tr>
512
+
513
+
514
+
515
+ <tr class="inferred">
516
+ <td><pre><a name="line77">77</a> # using == by default. In cases in which you want to specify things about the arguments</pre></td>
517
+ </tr>
518
+
519
+
520
+
521
+ <tr class="inferred">
522
+ <td><pre><a name="line78">78</a> # rather than the arguments themselves, you can use any of RSpec's Expression Matchers.</pre></td>
523
+ </tr>
524
+
525
+
526
+
527
+ <tr class="inferred">
528
+ <td><pre><a name="line79">79</a> # They don't all make syntactic sense (they were primarily designed for use with</pre></td>
529
+ </tr>
530
+
531
+
532
+
533
+ <tr class="inferred">
534
+ <td><pre><a name="line80">80</a> # RSpec::Expectations), but you are free to create your own custom RSpec::Matchers.</pre></td>
535
+ </tr>
536
+
537
+
538
+
539
+ <tr class="inferred">
540
+ <td><pre><a name="line81">81</a> #</pre></td>
541
+ </tr>
542
+
543
+
544
+
545
+ <tr class="inferred">
546
+ <td><pre><a name="line82">82</a> # RSpec::Mocks does provide one additional Matcher method named #ducktype.</pre></td>
547
+ </tr>
548
+
549
+
550
+
551
+ <tr class="inferred">
552
+ <td><pre><a name="line83">83</a> #</pre></td>
553
+ </tr>
554
+
555
+
556
+
557
+ <tr class="inferred">
558
+ <td><pre><a name="line84">84</a> # In addition, RSpec::Mocks adds some keyword Symbols that you can use to</pre></td>
559
+ </tr>
560
+
561
+
562
+
563
+ <tr class="inferred">
564
+ <td><pre><a name="line85">85</a> # specify certain kinds of arguments:</pre></td>
565
+ </tr>
566
+
567
+
568
+
569
+ <tr class="inferred">
570
+ <td><pre><a name="line86">86</a> #</pre></td>
571
+ </tr>
572
+
573
+
574
+
575
+ <tr class="inferred">
576
+ <td><pre><a name="line87">87</a> # double.should_receive(:msg).with(no_args())</pre></td>
577
+ </tr>
578
+
579
+
580
+
581
+ <tr class="inferred">
582
+ <td><pre><a name="line88">88</a> # double.should_receive(:msg).with(any_args())</pre></td>
583
+ </tr>
584
+
585
+
586
+
587
+ <tr class="inferred">
588
+ <td><pre><a name="line89">89</a> # double.should_receive(:msg).with(1, kind_of(Numeric), &quot;b&quot;) #2nd argument can any kind of Numeric</pre></td>
589
+ </tr>
590
+
591
+
592
+
593
+ <tr class="inferred">
594
+ <td><pre><a name="line90">90</a> # double.should_receive(:msg).with(1, boolean(), &quot;b&quot;) #2nd argument can true or false</pre></td>
595
+ </tr>
596
+
597
+
598
+
599
+ <tr class="inferred">
600
+ <td><pre><a name="line91">91</a> # double.should_receive(:msg).with(1, /abc/, &quot;b&quot;) #2nd argument can be any String matching the submitted Regexp</pre></td>
601
+ </tr>
602
+
603
+
604
+
605
+ <tr class="inferred">
606
+ <td><pre><a name="line92">92</a> # double.should_receive(:msg).with(1, anything(), &quot;b&quot;) #2nd argument can be anything at all</pre></td>
607
+ </tr>
608
+
609
+
610
+
611
+ <tr class="inferred">
612
+ <td><pre><a name="line93">93</a> # double.should_receive(:msg).with(1, ducktype(:abs, :div), &quot;b&quot;)</pre></td>
613
+ </tr>
614
+
615
+
616
+
617
+ <tr class="inferred">
618
+ <td><pre><a name="line94">94</a> # #2nd argument can be object that responds to #abs and #div</pre></td>
619
+ </tr>
620
+
621
+
622
+
623
+ <tr class="inferred">
624
+ <td><pre><a name="line95">95</a> # </pre></td>
625
+ </tr>
626
+
627
+
628
+
629
+ <tr class="inferred">
630
+ <td><pre><a name="line96">96</a> # == Receive Counts</pre></td>
631
+ </tr>
632
+
633
+
634
+
635
+ <tr class="inferred">
636
+ <td><pre><a name="line97">97</a> #</pre></td>
637
+ </tr>
638
+
639
+
640
+
641
+ <tr class="inferred">
642
+ <td><pre><a name="line98">98</a> # double.should_receive(:msg).once</pre></td>
643
+ </tr>
644
+
645
+
646
+
647
+ <tr class="inferred">
648
+ <td><pre><a name="line99">99</a> # double.should_receive(:msg).twice</pre></td>
649
+ </tr>
650
+
651
+
652
+
653
+ <tr class="inferred">
654
+ <td><pre><a name="line100">100</a> # double.should_receive(:msg).exactly(n).times</pre></td>
655
+ </tr>
656
+
657
+
658
+
659
+ <tr class="inferred">
660
+ <td><pre><a name="line101">101</a> # double.should_receive(:msg).at_least(:once)</pre></td>
661
+ </tr>
662
+
663
+
664
+
665
+ <tr class="inferred">
666
+ <td><pre><a name="line102">102</a> # double.should_receive(:msg).at_least(:twice)</pre></td>
667
+ </tr>
668
+
669
+
670
+
671
+ <tr class="inferred">
672
+ <td><pre><a name="line103">103</a> # double.should_receive(:msg).at_least(n).times</pre></td>
673
+ </tr>
674
+
675
+
676
+
677
+ <tr class="inferred">
678
+ <td><pre><a name="line104">104</a> # double.should_receive(:msg).at_most(:once)</pre></td>
679
+ </tr>
680
+
681
+
682
+
683
+ <tr class="inferred">
684
+ <td><pre><a name="line105">105</a> # double.should_receive(:msg).at_most(:twice)</pre></td>
685
+ </tr>
686
+
687
+
688
+
689
+ <tr class="inferred">
690
+ <td><pre><a name="line106">106</a> # double.should_receive(:msg).at_most(n).times</pre></td>
691
+ </tr>
692
+
693
+
694
+
695
+ <tr class="inferred">
696
+ <td><pre><a name="line107">107</a> # double.should_receive(:msg).any_number_of_times</pre></td>
697
+ </tr>
698
+
699
+
700
+
701
+ <tr class="inferred">
702
+ <td><pre><a name="line108">108</a> #</pre></td>
703
+ </tr>
704
+
705
+
706
+
707
+ <tr class="inferred">
708
+ <td><pre><a name="line109">109</a> # == Ordering</pre></td>
709
+ </tr>
710
+
711
+
712
+
713
+ <tr class="inferred">
714
+ <td><pre><a name="line110">110</a> #</pre></td>
715
+ </tr>
716
+
717
+
718
+
719
+ <tr class="inferred">
720
+ <td><pre><a name="line111">111</a> # double.should_receive(:msg).ordered</pre></td>
721
+ </tr>
722
+
723
+
724
+
725
+ <tr class="inferred">
726
+ <td><pre><a name="line112">112</a> # double.should_receive(:other_msg).ordered</pre></td>
727
+ </tr>
728
+
729
+
730
+
731
+ <tr class="inferred">
732
+ <td><pre><a name="line113">113</a> # #This will fail if the messages are received out of order</pre></td>
733
+ </tr>
734
+
735
+
736
+
737
+ <tr class="inferred">
738
+ <td><pre><a name="line114">114</a> #</pre></td>
739
+ </tr>
740
+
741
+
742
+
743
+ <tr class="inferred">
744
+ <td><pre><a name="line115">115</a> # == Setting Reponses</pre></td>
745
+ </tr>
746
+
747
+
748
+
749
+ <tr class="inferred">
750
+ <td><pre><a name="line116">116</a> #</pre></td>
751
+ </tr>
752
+
753
+
754
+
755
+ <tr class="inferred">
756
+ <td><pre><a name="line117">117</a> # Whether you are setting a message expectation or a method stub, you can</pre></td>
757
+ </tr>
758
+
759
+
760
+
761
+ <tr class="inferred">
762
+ <td><pre><a name="line118">118</a> # tell the object precisely how to respond. The most generic way is to pass</pre></td>
763
+ </tr>
764
+
765
+
766
+
767
+ <tr class="inferred">
768
+ <td><pre><a name="line119">119</a> # a block to +stub+ or +should_receive+:</pre></td>
769
+ </tr>
770
+
771
+
772
+
773
+ <tr class="inferred">
774
+ <td><pre><a name="line120">120</a> #</pre></td>
775
+ </tr>
776
+
777
+
778
+
779
+ <tr class="inferred">
780
+ <td><pre><a name="line121">121</a> # double.should_receive(:msg) { value }</pre></td>
781
+ </tr>
782
+
783
+
784
+
785
+ <tr class="inferred">
786
+ <td><pre><a name="line122">122</a> #</pre></td>
787
+ </tr>
788
+
789
+
790
+
791
+ <tr class="inferred">
792
+ <td><pre><a name="line123">123</a> # When the double receives the +msg+ message, it evaluates the block and returns</pre></td>
793
+ </tr>
794
+
795
+
796
+
797
+ <tr class="inferred">
798
+ <td><pre><a name="line124">124</a> # the result.</pre></td>
799
+ </tr>
800
+
801
+
802
+
803
+ <tr class="inferred">
804
+ <td><pre><a name="line125">125</a> #</pre></td>
805
+ </tr>
806
+
807
+
808
+
809
+ <tr class="inferred">
810
+ <td><pre><a name="line126">126</a> # double.should_receive(:msg).and_return(value)</pre></td>
811
+ </tr>
812
+
813
+
814
+
815
+ <tr class="inferred">
816
+ <td><pre><a name="line127">127</a> # double.should_receive(:msg).exactly(3).times.and_return(value1, value2, value3)</pre></td>
817
+ </tr>
818
+
819
+
820
+
821
+ <tr class="inferred">
822
+ <td><pre><a name="line128">128</a> # # returns value1 the first time, value2 the second, etc</pre></td>
823
+ </tr>
824
+
825
+
826
+
827
+ <tr class="inferred">
828
+ <td><pre><a name="line129">129</a> # double.should_receive(:msg).and_raise(error)</pre></td>
829
+ </tr>
830
+
831
+
832
+
833
+ <tr class="inferred">
834
+ <td><pre><a name="line130">130</a> # #error can be an instantiated object or a class</pre></td>
835
+ </tr>
836
+
837
+
838
+
839
+ <tr class="inferred">
840
+ <td><pre><a name="line131">131</a> # #if it is a class, it must be instantiable with no args</pre></td>
841
+ </tr>
842
+
843
+
844
+
845
+ <tr class="inferred">
846
+ <td><pre><a name="line132">132</a> # double.should_receive(:msg).and_throw(:msg)</pre></td>
847
+ </tr>
848
+
849
+
850
+
851
+ <tr class="inferred">
852
+ <td><pre><a name="line133">133</a> # double.should_receive(:msg).and_yield(values,to,yield)</pre></td>
853
+ </tr>
854
+
855
+
856
+
857
+ <tr class="inferred">
858
+ <td><pre><a name="line134">134</a> # double.should_receive(:msg).and_yield(values,to,yield).and_yield(some,other,values,this,time)</pre></td>
859
+ </tr>
860
+
861
+
862
+
863
+ <tr class="inferred">
864
+ <td><pre><a name="line135">135</a> # # for methods that yield to a block multiple times</pre></td>
865
+ </tr>
866
+
867
+
868
+
869
+ <tr class="inferred">
870
+ <td><pre><a name="line136">136</a> #</pre></td>
871
+ </tr>
872
+
873
+
874
+
875
+ <tr class="inferred">
876
+ <td><pre><a name="line137">137</a> # Any of these responses can be applied to a stub as well</pre></td>
877
+ </tr>
878
+
879
+
880
+
881
+ <tr class="inferred">
882
+ <td><pre><a name="line138">138</a> #</pre></td>
883
+ </tr>
884
+
885
+
886
+
887
+ <tr class="inferred">
888
+ <td><pre><a name="line139">139</a> # double.stub(:msg).and_return(value)</pre></td>
889
+ </tr>
890
+
891
+
892
+
893
+ <tr class="inferred">
894
+ <td><pre><a name="line140">140</a> # double.stub(:msg).and_return(value1, value2, value3)</pre></td>
895
+ </tr>
896
+
897
+
898
+
899
+ <tr class="inferred">
900
+ <td><pre><a name="line141">141</a> # double.stub(:msg).and_raise(error)</pre></td>
901
+ </tr>
902
+
903
+
904
+
905
+ <tr class="inferred">
906
+ <td><pre><a name="line142">142</a> # double.stub(:msg).and_throw(:msg)</pre></td>
907
+ </tr>
908
+
909
+
910
+
911
+ <tr class="inferred">
912
+ <td><pre><a name="line143">143</a> # double.stub(:msg).and_yield(values,to,yield)</pre></td>
913
+ </tr>
914
+
915
+
916
+
917
+ <tr class="inferred">
918
+ <td><pre><a name="line144">144</a> # double.stub(:msg).and_yield(values,to,yield).and_yield(some,other,values,this,time)</pre></td>
919
+ </tr>
920
+
921
+
922
+
923
+ <tr class="inferred">
924
+ <td><pre><a name="line145">145</a> #</pre></td>
925
+ </tr>
926
+
927
+
928
+
929
+ <tr class="inferred">
930
+ <td><pre><a name="line146">146</a> # == Arbitrary Handling</pre></td>
931
+ </tr>
932
+
933
+
934
+
935
+ <tr class="inferred">
936
+ <td><pre><a name="line147">147</a> #</pre></td>
937
+ </tr>
938
+
939
+
940
+
941
+ <tr class="inferred">
942
+ <td><pre><a name="line148">148</a> # Once in a while you'll find that the available expectations don't solve the</pre></td>
943
+ </tr>
944
+
945
+
946
+
947
+ <tr class="inferred">
948
+ <td><pre><a name="line149">149</a> # particular problem you are trying to solve. Imagine that you expect the message</pre></td>
949
+ </tr>
950
+
951
+
952
+
953
+ <tr class="inferred">
954
+ <td><pre><a name="line150">150</a> # to come with an Array argument that has a specific length, but you don't care</pre></td>
955
+ </tr>
956
+
957
+
958
+
959
+ <tr class="inferred">
960
+ <td><pre><a name="line151">151</a> # what is in it. You could do this:</pre></td>
961
+ </tr>
962
+
963
+
964
+
965
+ <tr class="inferred">
966
+ <td><pre><a name="line152">152</a> #</pre></td>
967
+ </tr>
968
+
969
+
970
+
971
+ <tr class="inferred">
972
+ <td><pre><a name="line153">153</a> # double.should_receive(:msg) do |arg|</pre></td>
973
+ </tr>
974
+
975
+
976
+
977
+ <tr class="inferred">
978
+ <td><pre><a name="line154">154</a> # arg.should be_an_istance_of(Array)</pre></td>
979
+ </tr>
980
+
981
+
982
+
983
+ <tr class="inferred">
984
+ <td><pre><a name="line155">155</a> # arg.length.should == 7</pre></td>
985
+ </tr>
986
+
987
+
988
+
989
+ <tr class="inferred">
990
+ <td><pre><a name="line156">156</a> # end</pre></td>
991
+ </tr>
992
+
993
+
994
+
995
+ <tr class="inferred">
996
+ <td><pre><a name="line157">157</a> #</pre></td>
997
+ </tr>
998
+
999
+
1000
+
1001
+ <tr class="inferred">
1002
+ <td><pre><a name="line158">158</a> # == Combining Expectation Details</pre></td>
1003
+ </tr>
1004
+
1005
+
1006
+
1007
+ <tr class="inferred">
1008
+ <td><pre><a name="line159">159</a> #</pre></td>
1009
+ </tr>
1010
+
1011
+
1012
+
1013
+ <tr class="inferred">
1014
+ <td><pre><a name="line160">160</a> # Combining the message name with specific arguments, receive counts and responses</pre></td>
1015
+ </tr>
1016
+
1017
+
1018
+
1019
+ <tr class="inferred">
1020
+ <td><pre><a name="line161">161</a> # you can get quite a bit of detail in your expectations:</pre></td>
1021
+ </tr>
1022
+
1023
+
1024
+
1025
+ <tr class="inferred">
1026
+ <td><pre><a name="line162">162</a> #</pre></td>
1027
+ </tr>
1028
+
1029
+
1030
+
1031
+ <tr class="inferred">
1032
+ <td><pre><a name="line163">163</a> # double.should_receive(:&lt;&lt;).with(&quot;illegal value&quot;).once.and_raise(ArgumentError)</pre></td>
1033
+ </tr>
1034
+
1035
+
1036
+
1037
+ <tr class="inferred">
1038
+ <td><pre><a name="line164">164</a> #</pre></td>
1039
+ </tr>
1040
+
1041
+
1042
+
1043
+ <tr class="inferred">
1044
+ <td><pre><a name="line165">165</a> # == Further Reading</pre></td>
1045
+ </tr>
1046
+
1047
+
1048
+
1049
+ <tr class="inferred">
1050
+ <td><pre><a name="line166">166</a> # </pre></td>
1051
+ </tr>
1052
+
1053
+
1054
+
1055
+ <tr class="inferred">
1056
+ <td><pre><a name="line167">167</a> # There are many different viewpoints about the meaning of mocks and stubs. If you are interested</pre></td>
1057
+ </tr>
1058
+
1059
+
1060
+
1061
+ <tr class="inferred">
1062
+ <td><pre><a name="line168">168</a> # in learning more, here is some recommended reading:</pre></td>
1063
+ </tr>
1064
+
1065
+
1066
+
1067
+ <tr class="inferred">
1068
+ <td><pre><a name="line169">169</a> # </pre></td>
1069
+ </tr>
1070
+
1071
+
1072
+
1073
+ <tr class="inferred">
1074
+ <td><pre><a name="line170">170</a> # * Mock Objects: http://www.mockobjects.com/</pre></td>
1075
+ </tr>
1076
+
1077
+
1078
+
1079
+ <tr class="inferred">
1080
+ <td><pre><a name="line171">171</a> # * Endo-Testing: http://www.mockobjects.com/files/endotesting.pdf</pre></td>
1081
+ </tr>
1082
+
1083
+
1084
+
1085
+ <tr class="inferred">
1086
+ <td><pre><a name="line172">172</a> # * Mock Roles, Not Objects: http://www.mockobjects.com/files/mockrolesnotobjects.pdf</pre></td>
1087
+ </tr>
1088
+
1089
+
1090
+
1091
+ <tr class="inferred">
1092
+ <td><pre><a name="line173">173</a> # * Test Double Patterns: http://xunitpatterns.com/Test%20Double%20Patterns.html</pre></td>
1093
+ </tr>
1094
+
1095
+
1096
+
1097
+ <tr class="inferred">
1098
+ <td><pre><a name="line174">174</a> # * Mocks aren't stubs: http://www.martinfowler.com/articles/mocksArentStubs.html</pre></td>
1099
+ </tr>
1100
+
1101
+
1102
+
1103
+ <tr class="marked">
1104
+ <td><pre><a name="line175">175</a> module Mocks</pre></td>
1105
+ </tr>
1106
+
1107
+
1108
+
1109
+ <tr class="marked">
1110
+ <td><pre><a name="line176">176</a> class &lt;&lt; self</pre></td>
1111
+ </tr>
1112
+
1113
+
1114
+
1115
+ <tr class="marked">
1116
+ <td><pre><a name="line177">177</a> attr_accessor :space</pre></td>
1117
+ </tr>
1118
+
1119
+
1120
+
1121
+ <tr class="inferred">
1122
+ <td><pre><a name="line178">178</a> </pre></td>
1123
+ </tr>
1124
+
1125
+
1126
+
1127
+ <tr class="marked">
1128
+ <td><pre><a name="line179">179</a> def setup(includer)</pre></td>
1129
+ </tr>
1130
+
1131
+
1132
+
1133
+ <tr class="marked">
1134
+ <td><pre><a name="line180">180</a> Object.class_eval { include RSpec::Mocks::Methods } unless Object &lt; RSpec::Mocks::Methods</pre></td>
1135
+ </tr>
1136
+
1137
+
1138
+
1139
+ <tr class="marked">
1140
+ <td><pre><a name="line181">181</a> (class &lt;&lt; includer; self; end).class_eval do</pre></td>
1141
+ </tr>
1142
+
1143
+
1144
+
1145
+ <tr class="marked">
1146
+ <td><pre><a name="line182">182</a> include RSpec::Mocks::ExampleMethods</pre></td>
1147
+ </tr>
1148
+
1149
+
1150
+
1151
+ <tr class="inferred">
1152
+ <td><pre><a name="line183">183</a> end</pre></td>
1153
+ </tr>
1154
+
1155
+
1156
+
1157
+ <tr class="marked">
1158
+ <td><pre><a name="line184">184</a> self.space ||= RSpec::Mocks::Space.new</pre></td>
1159
+ </tr>
1160
+
1161
+
1162
+
1163
+ <tr class="inferred">
1164
+ <td><pre><a name="line185">185</a> end</pre></td>
1165
+ </tr>
1166
+
1167
+
1168
+
1169
+ <tr class="inferred">
1170
+ <td><pre><a name="line186">186</a> </pre></td>
1171
+ </tr>
1172
+
1173
+
1174
+
1175
+ <tr class="marked">
1176
+ <td><pre><a name="line187">187</a> def verify</pre></td>
1177
+ </tr>
1178
+
1179
+
1180
+
1181
+ <tr class="marked">
1182
+ <td><pre><a name="line188">188</a> space.verify_all</pre></td>
1183
+ </tr>
1184
+
1185
+
1186
+
1187
+ <tr class="inferred">
1188
+ <td><pre><a name="line189">189</a> end</pre></td>
1189
+ </tr>
1190
+
1191
+
1192
+
1193
+ <tr class="inferred">
1194
+ <td><pre><a name="line190">190</a> </pre></td>
1195
+ </tr>
1196
+
1197
+
1198
+
1199
+ <tr class="marked">
1200
+ <td><pre><a name="line191">191</a> def teardown</pre></td>
1201
+ </tr>
1202
+
1203
+
1204
+
1205
+ <tr class="marked">
1206
+ <td><pre><a name="line192">192</a> space.reset_all</pre></td>
1207
+ </tr>
1208
+
1209
+
1210
+
1211
+ <tr class="inferred">
1212
+ <td><pre><a name="line193">193</a> end</pre></td>
1213
+ </tr>
1214
+
1215
+
1216
+
1217
+ <tr class="inferred">
1218
+ <td><pre><a name="line194">194</a> end</pre></td>
1219
+ </tr>
1220
+
1221
+
1222
+
1223
+ <tr class="inferred">
1224
+ <td><pre><a name="line195">195</a> end</pre></td>
1225
+ </tr>
1226
+
1227
+
1228
+
1229
+ <tr class="inferred">
1230
+ <td><pre><a name="line196">196</a> end</pre></td>
1231
+ </tr>
1232
+
1233
+ </tbody>
1234
+ </table>
1235
+
1236
+ <p>Generated on Fri Apr 22 17:22:42 -0700 2011 with <a href="http://github.com/relevance/rcov">rcov 0.9.8</a></p>
1237
+
1238
+ </body>
1239
+ </html>