flexmock 0.1.7 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +5 -0
- data/README +166 -52
- data/Rakefile +12 -2
- data/lib/flexmock.rb +40 -1
- data/test/test_record_mode.rb +109 -0
- metadata +34 -30
data/CHANGELOG
CHANGED
data/README
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
FlexMock is a simple mock object for unit testing. The interface is
|
4
4
|
simple, but still provides a good bit of flexibility.
|
5
5
|
|
6
|
-
Version :: 0.
|
6
|
+
Version :: 0.2.0
|
7
7
|
|
8
8
|
= Links
|
9
9
|
|
@@ -49,62 +49,163 @@ Here's the complete example:
|
|
49
49
|
|
50
50
|
== Quick Reference
|
51
51
|
|
52
|
-
|
53
|
-
expectations on a FlexMock object.
|
52
|
+
=== Expectation Declarators
|
54
53
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
* <tt>
|
60
|
-
|
61
|
-
|
54
|
+
Expectation declarators are used to specify the expectations placed
|
55
|
+
upon received method calls. The following declarators may be used to
|
56
|
+
create the proper expectations on a FlexMock object.
|
57
|
+
|
58
|
+
* <b><tt>should_receive(<em>symbol</em>)</tt></b> -- Declares that a
|
59
|
+
message named <em>symbol</em> will be sent to the mock object.
|
60
|
+
Further refinements on this expected message (called an expectation)
|
61
|
+
may be chained to the +should_receive+ call.
|
62
|
+
|
63
|
+
* <b><tt>should_expect</tt></b> -- Creates a mock recording object
|
64
|
+
that will translate received method calls into mock expectations.
|
65
|
+
The recorder is passed to a block supplied with the +should_expect+
|
66
|
+
method. See examples below.
|
67
|
+
|
68
|
+
* <b><tt>with(<em>arglist</em>)</tt></b> -- Declares that this
|
69
|
+
expectation matches messages that match the given argument list.
|
70
|
+
The <tt>===</tt> operator is used on a argument by argument basis to
|
62
71
|
determine matching. This means that most literal values match
|
63
72
|
literally, class values match any instance of a class and regular
|
64
73
|
expression match any matching string (after a +to_s+ conversion).
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
* <tt>
|
72
|
-
|
73
|
-
|
74
|
-
|
74
|
+
See argument validators (below) for details on argument validation
|
75
|
+
options.
|
76
|
+
|
77
|
+
* <b><tt>with_any_args</tt></b> -- Declares that this expectation
|
78
|
+
matches the message with any argument (default)
|
79
|
+
|
80
|
+
* <b><tt>with_no_args</tt></b> -- Declares that this expectation
|
81
|
+
matches messages with no arguments
|
82
|
+
|
83
|
+
* <b><tt>returns(<em>value</em>)</tt></b> -- Declares that the message
|
84
|
+
will return the given value (<tt>returns(nil)</tt> is the default).
|
85
|
+
|
86
|
+
* <b><tt>returns { |args| code ... }</tt></b> -- Declares that the
|
87
|
+
message will return whatever the block calculates. The actual
|
88
|
+
arguments in the message will be passed to the block.
|
89
|
+
|
90
|
+
* <b><tt>zero_or_more_times</tt></b> -- Declares that the message is
|
91
|
+
may be sent zero or more times (default, equivalent to
|
75
92
|
<tt>at_least.never</tt>).
|
76
|
-
|
77
|
-
|
78
|
-
* <tt>twice</tt> -- Declares that the message is only sent twice.
|
93
|
+
|
94
|
+
* <b><tt>once</tt></b> -- Declares that the message is only sent once.
|
79
95
|
<tt>at_least</tt> / <tt>at_most</tt> modifiers are allowed.
|
80
|
-
|
96
|
+
|
97
|
+
* <b><tt>twice</tt></b> -- Declares that the message is only sent
|
98
|
+
twice. <tt>at_least</tt> / <tt>at_most</tt> modifiers are allowed.
|
99
|
+
|
100
|
+
* <b><tt>never</tt></b> -- Declares that the message is never sent.
|
81
101
|
<tt>at_least</tt> / <tt>at_most</tt> modifiers are allowed.
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
102
|
+
|
103
|
+
* <b><tt>times(<em>n</em>)</tt></b> -- Declares that the message is
|
104
|
+
sent <em>n</em> times. <tt>at_least</tt> / <tt>at_most</tt>
|
105
|
+
modifiers are allowed.
|
106
|
+
|
107
|
+
* <b><tt>at_least</tt></b> -- Modifies the immediately following
|
108
|
+
message count declarator so that it means the message is sent at
|
109
|
+
least that number of times. E.g. <tt>at_least.once</tt> means the
|
110
|
+
message is sent at least once during the test, but may be sent more
|
111
|
+
often. Both <tt>at_least</tt> and <tt>at_most</tt> may be specified
|
112
|
+
on the same expectation.
|
113
|
+
|
114
|
+
* <b><tt>at_most</tt></b> -- Similar to <tt>at_least</tt>, but puts an
|
115
|
+
upper limit on the number of messages. Both <tt>at_least</tt> and
|
93
116
|
<tt>at_most</tt> may be specified on the same expectation.
|
94
|
-
|
95
|
-
|
117
|
+
|
118
|
+
* <b><tt>ordered</tt></b> -- Declares that the message is ordered and
|
119
|
+
is expected to be received in a certain position in a sequence of
|
96
120
|
messages. The message should arrive after and previously declared
|
97
121
|
ordered messages and prior to any following declared ordered
|
98
122
|
messages. Unordered messages are ignored when considering the
|
99
123
|
message order.
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
the
|
124
|
+
|
125
|
+
* <b><tt>ordered(<em>group</em>)</tt></b> -- Declare that the given
|
126
|
+
method belongs to an order group. Methods within the group may be
|
127
|
+
received in any order. Ordered messages outside the group must be
|
128
|
+
received either before or after the grouped messages.
|
129
|
+
|
130
|
+
For example, in the following, messages +flip+ and +flop+ may be
|
131
|
+
received in any order (because they are in the same group), but must
|
132
|
+
occur strictly after +start+ but before +end+. The message
|
133
|
+
+any_time+ may be received at any time because it is not ordered.
|
134
|
+
|
135
|
+
m = FlexMock.new
|
136
|
+
m.should_receive(:any_time)
|
137
|
+
m.should_receive(:start).ordered
|
138
|
+
m.should_receive(:flip).ordered(:flip_flop_group)
|
139
|
+
m.should_receive(:flop).ordered(:flip_flop_group)
|
140
|
+
m.should_receive(:end).ordered
|
141
|
+
|
142
|
+
=== Argument Validation
|
143
|
+
|
144
|
+
The values passed to the +with+ declarator determine the criteria for
|
145
|
+
matching expectations. The first expectation found that matches the
|
146
|
+
arguments in a mock method call will be used to validate that mock
|
147
|
+
method call.
|
148
|
+
|
149
|
+
The following rules are used for argument matching:
|
150
|
+
|
151
|
+
* A +with+ parameter that is a class object will match any actual
|
152
|
+
argument that is an instance of that class.
|
153
|
+
|
154
|
+
Examples:
|
155
|
+
|
156
|
+
with(Integer) will match f(3)
|
157
|
+
|
158
|
+
* A regular expression will match any actual argument that matches the
|
159
|
+
regular expression. Non-string actual arguments are converted to
|
160
|
+
strings via +to_s+ before applying the regular expression.
|
161
|
+
|
162
|
+
Examples:
|
163
|
+
|
164
|
+
with(/^src/) will match f("src_object")
|
165
|
+
with(/^3\./) will match f(3.1415972)
|
166
|
+
|
167
|
+
* Most other objects will match based on equal values.
|
168
|
+
|
169
|
+
Examples:
|
170
|
+
|
171
|
+
with(3) will match f(3)
|
172
|
+
with("hello") will match f("hello")
|
173
|
+
|
174
|
+
* If you wish to override the default matching behavior and force
|
175
|
+
matching by equality, you can use teh FlexMock.eq convenience
|
176
|
+
method. This is mostly used when you wish to match class objects,
|
177
|
+
since the default matching behavior for class objects is to match
|
178
|
+
instances, not themselves.
|
179
|
+
|
180
|
+
Examples:
|
181
|
+
|
182
|
+
with(FlexMock.eq(Integer)) will match f(Integer)
|
183
|
+
with(FlexMock.eq(Integer)) will NOT match f(3)
|
184
|
+
|
185
|
+
If the user includes the FlexMock::ArgumentTypes module in the test
|
186
|
+
class, the above examples can be shortened to:
|
187
|
+
|
188
|
+
with(eq(Integer)) will match f(Integer)
|
189
|
+
with(eq(Integer)) will NOT match f(3)
|
190
|
+
|
191
|
+
* If you wish to match _anything_, then use the <tt>FlexMock.any</tt>
|
192
|
+
method in the with argument list.
|
193
|
+
|
194
|
+
Examples (assumes FlexMock::ArguementTypes has been included):
|
195
|
+
|
196
|
+
with(any) will match f(3)
|
197
|
+
with(any) will match f("hello")
|
198
|
+
with(any) will match f(Integer)
|
199
|
+
with(any) will match f(nil)
|
200
|
+
|
201
|
+
* If you wish to specify a complex matching criteria, use the
|
202
|
+
<tt>FlexMock.on(&block)</tt> with the logic contained in the block.
|
203
|
+
|
204
|
+
Examples (assumes FlexMock::ArguementTypes has been included):
|
205
|
+
|
206
|
+
with(on { |arg| (arg % 2) == 0 } )
|
207
|
+
|
208
|
+
will match any even integer.
|
108
209
|
|
109
210
|
== Examples
|
110
211
|
|
@@ -115,7 +216,7 @@ argument of 5.
|
|
115
216
|
|
116
217
|
FlexMock('db').use |db|
|
117
218
|
db.should_receive(:query).and_return([1,2,3])
|
118
|
-
db.
|
219
|
+
db.should_receive(:update).with(5).and_return(nil).once
|
119
220
|
# test code here
|
120
221
|
end
|
121
222
|
|
@@ -125,18 +226,18 @@ All the query message must occur before any of the update messages.
|
|
125
226
|
|
126
227
|
FlexMock('db').use |db|
|
127
228
|
db.should_receive(:query).and_return([1,2,3]).ordered
|
128
|
-
db.
|
229
|
+
db.should_receive(:update).and_return(nil).ordered
|
129
230
|
# test code here
|
130
231
|
end
|
131
232
|
|
132
233
|
=== Expect several queries with different parameters
|
133
234
|
|
134
235
|
The queries should happen after startup but before finish. The
|
135
|
-
queries themselves may happen in any order (because they
|
136
|
-
order
|
137
|
-
the third query (which matches any query call with a four
|
138
|
-
parameter) may be called multiple times (but at least once).
|
139
|
-
and finish must also happen exactly once.
|
236
|
+
queries themselves may happen in any order (because they are in the
|
237
|
+
same order group). The first two queries should happen exactly once,
|
238
|
+
but the third query (which matches any query call with a four
|
239
|
+
character parameter) may be called multiple times (but at least once).
|
240
|
+
Startup and finish must also happen exactly once.
|
140
241
|
|
141
242
|
Also note that we use the +with+ method to match different arguement
|
142
243
|
values to figure out what value to return.
|
@@ -153,6 +254,19 @@ values to figure out what value to return.
|
|
153
254
|
# test code here
|
154
255
|
end
|
155
256
|
|
257
|
+
=== Same as above, but using the record mode interface
|
258
|
+
|
259
|
+
FlexMock('db').use |db|
|
260
|
+
db.should_expect do |rec|
|
261
|
+
rec.startup.once.ordered
|
262
|
+
rec.query("CPWR") { 12.3 }.once.ordered(:queries)
|
263
|
+
rec.query("MSFT") { 10.0 }.once.ordered(:queries)
|
264
|
+
rec.query(/^....$/) { 3.3 }.at_least.once.ordered(:queries)
|
265
|
+
rec.finish.once.ordered
|
266
|
+
end
|
267
|
+
# test code here
|
268
|
+
end
|
269
|
+
|
156
270
|
=== Expect multiple calls, returning a different value each time
|
157
271
|
|
158
272
|
Sometimes you need to return different values for each call to a
|
data/Rakefile
CHANGED
@@ -8,7 +8,7 @@ require 'rake/testtask'
|
|
8
8
|
|
9
9
|
CLOBBER.include("html", 'pkg')
|
10
10
|
|
11
|
-
PKG_VERSION = '0.
|
11
|
+
PKG_VERSION = '0.2.0'
|
12
12
|
|
13
13
|
PKG_FILES = FileList[
|
14
14
|
'[A-Z]*',
|
@@ -52,7 +52,7 @@ end
|
|
52
52
|
|
53
53
|
task :rdoc => ["README"]
|
54
54
|
file "README" => ["Rakefile"] do
|
55
|
-
ruby %{-i.bak -pe 'sub!(/^Version *:: *(\\d+\\.)+\\d+ *$/, "Version :: #{PKG_VERSION}")' README}
|
55
|
+
ruby %{-i.bak -pe 'sub!(/^Version *:: *(\\d+\\.)+\\d+ *$/, "Version :: #{PKG_VERSION}")' README} # "
|
56
56
|
end
|
57
57
|
|
58
58
|
# Package Task -------------------------------------------------------
|
@@ -112,6 +112,12 @@ else
|
|
112
112
|
end
|
113
113
|
end
|
114
114
|
|
115
|
+
desc "Display a list of all the rubyfiles in the project."
|
116
|
+
task :rubyfiles do
|
117
|
+
puts FileList['**/*.rb']
|
118
|
+
end
|
119
|
+
task :rf => :rubyfiles
|
120
|
+
|
115
121
|
require 'rake/contrib/publisher'
|
116
122
|
require 'rake/contrib/sshpublisher'
|
117
123
|
|
@@ -129,4 +135,8 @@ task :publish => [:rdoc] do
|
|
129
135
|
blurb_publisher.upload
|
130
136
|
end
|
131
137
|
|
138
|
+
SVNHOME = 'svn://localhost/software/flexmock'
|
132
139
|
|
140
|
+
task :tag do
|
141
|
+
sh %{svn copy #{SVNHOME}/trunk #{SVNHOME}/tags/rel-#{PKG_VERSION} -m 'Release #{PKG_VERSION}'}
|
142
|
+
end
|
data/lib/flexmock.rb
CHANGED
@@ -30,6 +30,9 @@ require 'test/unit'
|
|
30
30
|
# m.should_receive(:downcase).with(String).
|
31
31
|
# returns { |s| s.downcase }.once
|
32
32
|
#
|
33
|
+
class FlexMock
|
34
|
+
end
|
35
|
+
|
33
36
|
class FlexMock
|
34
37
|
include Test::Unit::Assertions
|
35
38
|
|
@@ -118,6 +121,22 @@ class FlexMock
|
|
118
121
|
result
|
119
122
|
end
|
120
123
|
|
124
|
+
# Declare that the mock object should expect methods by providing a
|
125
|
+
# recorder for the methods and having the user invoke the expected
|
126
|
+
# methods in a block. Further expectations may be applied the
|
127
|
+
# result of the recording call.
|
128
|
+
#
|
129
|
+
# Example Usage:
|
130
|
+
#
|
131
|
+
# mock.should_expect do |record|
|
132
|
+
# record.add(Integer, 4) { |a, b|
|
133
|
+
# a + b
|
134
|
+
# }.at_least.once
|
135
|
+
#
|
136
|
+
def should_expect
|
137
|
+
yield Recorder.new(self)
|
138
|
+
end
|
139
|
+
|
121
140
|
class << self
|
122
141
|
include Test::Unit::Assertions
|
123
142
|
|
@@ -279,6 +298,9 @@ class FlexMock
|
|
279
298
|
EqualMatcher.new(obj)
|
280
299
|
end
|
281
300
|
|
301
|
+
# Return an argument matcher that matches any object, that when
|
302
|
+
# passed to the supplied block, will cause the block to return
|
303
|
+
# true.
|
282
304
|
def on(&block)
|
283
305
|
ProcMatcher.new(&block)
|
284
306
|
end
|
@@ -514,7 +536,7 @@ class FlexMock
|
|
514
536
|
# (e.g. specifying that a group of messages may be received in any
|
515
537
|
# order as long as they all come after another group of messages),
|
516
538
|
# a _group_ _name_ may be specified in the +ordered+ calls. All
|
517
|
-
# messages within the same group may be
|
539
|
+
# messages within the same group may be received in any order.
|
518
540
|
#
|
519
541
|
# For example, in the following, messages +flip+ and +flop+ may be
|
520
542
|
# received in any order (because they are in the same group), but
|
@@ -542,5 +564,22 @@ class FlexMock
|
|
542
564
|
end
|
543
565
|
end
|
544
566
|
|
567
|
+
####################################################################
|
568
|
+
# Translate arbitrary method calls into expectations on the given
|
569
|
+
# mock object.
|
570
|
+
#
|
571
|
+
class Recorder
|
572
|
+
# Create a method recorder for the mock +mock+.
|
573
|
+
def initialize(mock)
|
574
|
+
@mock = mock
|
575
|
+
end
|
576
|
+
|
577
|
+
# Record an expectation for receiving the method +sym+ with the
|
578
|
+
# given arguments.
|
579
|
+
def method_missing(sym, *args, &block)
|
580
|
+
@mock.should_receive(sym).and_return(&block).with(*args)
|
581
|
+
end
|
582
|
+
end
|
583
|
+
|
545
584
|
extend ArgumentTypes
|
546
585
|
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'flexmock'
|
5
|
+
|
6
|
+
module FailureAssertion
|
7
|
+
private
|
8
|
+
def assert_fails
|
9
|
+
assert_raise(Test::Unit::AssertionFailedError) do
|
10
|
+
yield
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class TestRecordMode < Test::Unit::TestCase
|
16
|
+
include FlexMock::ArgumentTypes
|
17
|
+
include FailureAssertion
|
18
|
+
|
19
|
+
def test_recording_mode_works
|
20
|
+
FlexMock.use("mock") do |mock|
|
21
|
+
mock.should_expect do |r|
|
22
|
+
r.f { :answer }
|
23
|
+
end
|
24
|
+
assert_equal :answer, mock.f
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_arguments_are_passed_to_recording_mode_block
|
29
|
+
FlexMock.new("mock") do |mock|
|
30
|
+
mock.should_expect do |recorder|
|
31
|
+
recorder.f do |arg|
|
32
|
+
assert_equal :arg, arg
|
33
|
+
:answer
|
34
|
+
end
|
35
|
+
end
|
36
|
+
assert_equal :answer, f(:arg)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_recording_mode_handles_multiple_returns
|
41
|
+
FlexMock.use("mock") do |mock|
|
42
|
+
mock.should_expect do |r|
|
43
|
+
answers = [1, 2]
|
44
|
+
r.f { answers.shift }
|
45
|
+
end
|
46
|
+
assert_equal 1, mock.f
|
47
|
+
assert_equal 2, mock.f
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_recording_mode_does_not_specify_order
|
52
|
+
FlexMock.use("mock") do |mock|
|
53
|
+
mock.should_expect do |r|
|
54
|
+
r.f { 1 }
|
55
|
+
r.g { 2 }
|
56
|
+
end
|
57
|
+
assert_equal 2, mock.g
|
58
|
+
assert_equal 1, mock.f
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_recording_mode_gets_block_args_too
|
63
|
+
FlexMock.use("mock") do |mock|
|
64
|
+
mock.should_expect do |r|
|
65
|
+
r.f(1, Proc) { |arg, block|
|
66
|
+
assert_not_nil block
|
67
|
+
block.call
|
68
|
+
}
|
69
|
+
end
|
70
|
+
|
71
|
+
assert_equal :block_result, mock.f(1) { :block_result }
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_recording_mode_should_validate_args_with_equals
|
76
|
+
assert_fails do
|
77
|
+
FlexMock.use("mock") do |mock|
|
78
|
+
mock.should_expect do |r|
|
79
|
+
r.f(1)
|
80
|
+
end
|
81
|
+
mock.f(2)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_recording_mode_should_allow_arg_contraint_validation
|
87
|
+
assert_fails do
|
88
|
+
FlexMock.use("mock") do |mock|
|
89
|
+
mock.should_expect do |r|
|
90
|
+
r.f(1)
|
91
|
+
end
|
92
|
+
mock.f(2)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_recording_mode_should_handle_multiplicity_contraints
|
98
|
+
assert_fails do
|
99
|
+
FlexMock.use("mock") do |mock|
|
100
|
+
mock.should_expect do |r|
|
101
|
+
r.f { :result }.once
|
102
|
+
end
|
103
|
+
mock.f
|
104
|
+
mock.f
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
metadata
CHANGED
@@ -1,57 +1,61 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.8.11.
|
2
|
+
rubygems_version: 0.8.11.6
|
3
3
|
specification_version: 1
|
4
4
|
name: flexmock
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date:
|
6
|
+
version: 0.2.0
|
7
|
+
date: 2006-03-21 00:00:00 -05:00
|
8
8
|
summary: Simple and Flexible Mock Objects for Testing
|
9
9
|
require_paths:
|
10
|
-
|
10
|
+
- lib
|
11
11
|
email: jim@weirichhouse.org
|
12
12
|
homepage: http://onestepback.org/software/flexmock
|
13
13
|
rubyforge_project:
|
14
|
-
description:
|
15
|
-
framework. Although the FlexMock's interface is simple, it is very flexible."
|
14
|
+
description: FlexMock is a extremely simple mock object class compatible with the Test::Unit framework. Although the FlexMock's interface is simple, it is very flexible.
|
16
15
|
autorequire:
|
17
16
|
default_executable:
|
18
17
|
bindir: bin
|
19
18
|
has_rdoc: true
|
20
19
|
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
21
20
|
requirements:
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
version: 0.0.0
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
26
24
|
version:
|
27
25
|
platform: ruby
|
28
26
|
signing_key:
|
29
27
|
cert_chain:
|
30
28
|
authors:
|
31
|
-
|
29
|
+
- Jim Weirich
|
32
30
|
files:
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
31
|
+
- CHANGELOG
|
32
|
+
- Rakefile
|
33
|
+
- README
|
34
|
+
- lib/flexmock.rb
|
35
|
+
- test/test_record_mode.rb
|
36
|
+
- test/test_should_receive.rb
|
37
|
+
- test/test_samples.rb
|
38
|
+
- test/test_mock.rb
|
39
|
+
- test/test_naming.rb
|
40
|
+
- test/test_example.rb
|
41
|
+
- flexmock.blurb
|
42
|
+
- install.rb
|
44
43
|
test_files: []
|
44
|
+
|
45
45
|
rdoc_options:
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
46
|
+
- --title
|
47
|
+
- Flex Mock
|
48
|
+
- --main
|
49
|
+
- README
|
50
|
+
- --line-numbers
|
51
51
|
extra_rdoc_files:
|
52
|
-
|
53
|
-
|
52
|
+
- CHANGELOG
|
53
|
+
- README
|
54
54
|
executables: []
|
55
|
+
|
55
56
|
extensions: []
|
57
|
+
|
56
58
|
requirements: []
|
57
|
-
|
59
|
+
|
60
|
+
dependencies: []
|
61
|
+
|