gimme 0.1.8 → 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/Gemfile +3 -1
- data/Gemfile.lock +10 -4
- data/README.markdown +41 -41
- data/Rakefile +5 -0
- data/VERSION +1 -1
- data/features/step_definitions/gimme_steps.rb +15 -1
- data/features/stub_class_methods.feature +21 -0
- data/features/support/animals.rb +16 -8
- data/gimme.gemspec +22 -6
- data/lib/gimme.rb +7 -3
- data/lib/gimme/dsl.rb +50 -0
- data/lib/gimme/gives.rb +1 -10
- data/lib/gimme/gives_class_methods.rb +54 -0
- data/lib/gimme/invokes_satisfied_stubbing.rb +29 -0
- data/lib/gimme/reset.rb +14 -0
- data/lib/gimme/resolves_methods.rb +40 -0
- data/lib/gimme/rspec_adapter.rb +1 -0
- data/lib/gimme/test_double.rb +2 -36
- data/lib/gimme/verifies.rb +1 -10
- data/spec/gimme/captor_spec.rb +23 -22
- data/spec/gimme/errors_spec.rb +4 -2
- data/spec/gimme/gives_class_methods_spec.rb +51 -0
- data/spec/gimme/gives_spec.rb +25 -38
- data/spec/gimme/matchers_spec.rb +89 -88
- data/spec/gimme/resolves_methods_spec.rb +73 -0
- data/spec/gimme/rspec_adapter_spec.rb +14 -0
- data/spec/gimme/shared_examples/shared_gives_examples.rb +34 -0
- data/spec/gimme/test_double_spec.rb +18 -16
- data/spec/gimme/verifies_spec.rb +92 -91
- metadata +53 -29
- data/lib/gimme/method_resolver.rb +0 -33
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gimme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-27 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: pry
|
16
|
+
requirement: &895832590 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *895832590
|
14
25
|
- !ruby/object:Gem::Dependency
|
15
26
|
name: rdoc
|
16
|
-
requirement: &
|
27
|
+
requirement: &895832300 !ruby/object:Gem::Requirement
|
17
28
|
none: false
|
18
29
|
requirements:
|
19
30
|
- - ! '>='
|
@@ -21,10 +32,10 @@ dependencies:
|
|
21
32
|
version: '0'
|
22
33
|
type: :development
|
23
34
|
prerelease: false
|
24
|
-
version_requirements: *
|
35
|
+
version_requirements: *895832300
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: jeweler
|
27
|
-
requirement: &
|
38
|
+
requirement: &895832010 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
40
|
requirements:
|
30
41
|
- - ~>
|
@@ -32,10 +43,10 @@ dependencies:
|
|
32
43
|
version: 1.5.2
|
33
44
|
type: :development
|
34
45
|
prerelease: false
|
35
|
-
version_requirements: *
|
46
|
+
version_requirements: *895832010
|
36
47
|
- !ruby/object:Gem::Dependency
|
37
48
|
name: rspec
|
38
|
-
requirement: &
|
49
|
+
requirement: &895831720 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
51
|
requirements:
|
41
52
|
- - ! '>='
|
@@ -43,10 +54,10 @@ dependencies:
|
|
43
54
|
version: '0'
|
44
55
|
type: :development
|
45
56
|
prerelease: false
|
46
|
-
version_requirements: *
|
57
|
+
version_requirements: *895831720
|
47
58
|
- !ruby/object:Gem::Dependency
|
48
59
|
name: rspec-given
|
49
|
-
requirement: &
|
60
|
+
requirement: &895831430 !ruby/object:Gem::Requirement
|
50
61
|
none: false
|
51
62
|
requirements:
|
52
63
|
- - ! '>='
|
@@ -54,10 +65,10 @@ dependencies:
|
|
54
65
|
version: '0'
|
55
66
|
type: :development
|
56
67
|
prerelease: false
|
57
|
-
version_requirements: *
|
68
|
+
version_requirements: *895831430
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: guard-rspec
|
60
|
-
requirement: &
|
71
|
+
requirement: &895831140 !ruby/object:Gem::Requirement
|
61
72
|
none: false
|
62
73
|
requirements:
|
63
74
|
- - ! '>='
|
@@ -65,10 +76,10 @@ dependencies:
|
|
65
76
|
version: '0'
|
66
77
|
type: :development
|
67
78
|
prerelease: false
|
68
|
-
version_requirements: *
|
79
|
+
version_requirements: *895831140
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: cucumber
|
71
|
-
requirement: &
|
82
|
+
requirement: &895830870 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
85
|
- - ! '>='
|
@@ -76,10 +87,10 @@ dependencies:
|
|
76
87
|
version: '0'
|
77
88
|
type: :development
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *895830870
|
80
91
|
- !ruby/object:Gem::Dependency
|
81
92
|
name: guard-cucumber
|
82
|
-
requirement: &
|
93
|
+
requirement: &895830610 !ruby/object:Gem::Requirement
|
83
94
|
none: false
|
84
95
|
requirements:
|
85
96
|
- - ! '>='
|
@@ -87,10 +98,10 @@ dependencies:
|
|
87
98
|
version: '0'
|
88
99
|
type: :development
|
89
100
|
prerelease: false
|
90
|
-
version_requirements: *
|
101
|
+
version_requirements: *895830610
|
91
102
|
- !ruby/object:Gem::Dependency
|
92
103
|
name: simplecov
|
93
|
-
requirement: &
|
104
|
+
requirement: &895830320 !ruby/object:Gem::Requirement
|
94
105
|
none: false
|
95
106
|
requirements:
|
96
107
|
- - ! '>='
|
@@ -98,10 +109,10 @@ dependencies:
|
|
98
109
|
version: '0'
|
99
110
|
type: :development
|
100
111
|
prerelease: false
|
101
|
-
version_requirements: *
|
112
|
+
version_requirements: *895830320
|
102
113
|
- !ruby/object:Gem::Dependency
|
103
|
-
name:
|
104
|
-
requirement: &
|
114
|
+
name: growl
|
115
|
+
requirement: &895830030 !ruby/object:Gem::Requirement
|
105
116
|
none: false
|
106
117
|
requirements:
|
107
118
|
- - ! '>='
|
@@ -109,10 +120,10 @@ dependencies:
|
|
109
120
|
version: '0'
|
110
121
|
type: :development
|
111
122
|
prerelease: false
|
112
|
-
version_requirements: *
|
123
|
+
version_requirements: *895830030
|
113
124
|
- !ruby/object:Gem::Dependency
|
114
125
|
name: rb-fsevent
|
115
|
-
requirement: &
|
126
|
+
requirement: &895829740 !ruby/object:Gem::Requirement
|
116
127
|
none: false
|
117
128
|
requirements:
|
118
129
|
- - ! '>='
|
@@ -120,10 +131,10 @@ dependencies:
|
|
120
131
|
version: '0'
|
121
132
|
type: :development
|
122
133
|
prerelease: false
|
123
|
-
version_requirements: *
|
134
|
+
version_requirements: *895829740
|
124
135
|
- !ruby/object:Gem::Dependency
|
125
136
|
name: rspec
|
126
|
-
requirement: &
|
137
|
+
requirement: &895829450 !ruby/object:Gem::Requirement
|
127
138
|
none: false
|
128
139
|
requirements:
|
129
140
|
- - ! '>='
|
@@ -131,10 +142,10 @@ dependencies:
|
|
131
142
|
version: 1.3.1
|
132
143
|
type: :development
|
133
144
|
prerelease: false
|
134
|
-
version_requirements: *
|
145
|
+
version_requirements: *895829450
|
135
146
|
- !ruby/object:Gem::Dependency
|
136
147
|
name: cucumber
|
137
|
-
requirement: &
|
148
|
+
requirement: &895829190 !ruby/object:Gem::Requirement
|
138
149
|
none: false
|
139
150
|
requirements:
|
140
151
|
- - ! '>='
|
@@ -142,7 +153,7 @@ dependencies:
|
|
142
153
|
version: 0.10.0
|
143
154
|
type: :development
|
144
155
|
prerelease: false
|
145
|
-
version_requirements: *
|
156
|
+
version_requirements: *895829190
|
146
157
|
description: ! 'gimme attempts to bring to Ruby a test double workflow akin to Mockito
|
147
158
|
in Java. Major distinctions include preserving arrange-act-assert in tests, fast
|
148
159
|
feedback for methods the double''s real counterpart may not know how to respond
|
@@ -170,6 +181,7 @@ files:
|
|
170
181
|
- features/gimme_next.feature
|
171
182
|
- features/step_definitions/gimme_steps.rb
|
172
183
|
- features/stub_basic.feature
|
184
|
+
- features/stub_class_methods.feature
|
173
185
|
- features/stub_matchers.feature
|
174
186
|
- features/stub_sensible_defaults.feature
|
175
187
|
- features/support/animals.rb
|
@@ -182,17 +194,25 @@ files:
|
|
182
194
|
- lib/gimme-double.rb
|
183
195
|
- lib/gimme.rb
|
184
196
|
- lib/gimme/captor.rb
|
197
|
+
- lib/gimme/dsl.rb
|
185
198
|
- lib/gimme/errors.rb
|
186
199
|
- lib/gimme/gives.rb
|
200
|
+
- lib/gimme/gives_class_methods.rb
|
201
|
+
- lib/gimme/invokes_satisfied_stubbing.rb
|
187
202
|
- lib/gimme/matchers.rb
|
188
|
-
- lib/gimme/
|
203
|
+
- lib/gimme/reset.rb
|
204
|
+
- lib/gimme/resolves_methods.rb
|
189
205
|
- lib/gimme/rspec_adapter.rb
|
190
206
|
- lib/gimme/test_double.rb
|
191
207
|
- lib/gimme/verifies.rb
|
192
208
|
- spec/gimme/captor_spec.rb
|
193
209
|
- spec/gimme/errors_spec.rb
|
210
|
+
- spec/gimme/gives_class_methods_spec.rb
|
194
211
|
- spec/gimme/gives_spec.rb
|
195
212
|
- spec/gimme/matchers_spec.rb
|
213
|
+
- spec/gimme/resolves_methods_spec.rb
|
214
|
+
- spec/gimme/rspec_adapter_spec.rb
|
215
|
+
- spec/gimme/shared_examples/shared_gives_examples.rb
|
196
216
|
- spec/gimme/test_double_spec.rb
|
197
217
|
- spec/gimme/verifies_spec.rb
|
198
218
|
- spec/spec_helper.rb
|
@@ -211,7 +231,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
211
231
|
version: '0'
|
212
232
|
segments:
|
213
233
|
- 0
|
214
|
-
hash: -
|
234
|
+
hash: -671944717
|
215
235
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
216
236
|
none: false
|
217
237
|
requirements:
|
@@ -227,8 +247,12 @@ summary: gimme — a low-specification test double library for Ruby
|
|
227
247
|
test_files:
|
228
248
|
- spec/gimme/captor_spec.rb
|
229
249
|
- spec/gimme/errors_spec.rb
|
250
|
+
- spec/gimme/gives_class_methods_spec.rb
|
230
251
|
- spec/gimme/gives_spec.rb
|
231
252
|
- spec/gimme/matchers_spec.rb
|
253
|
+
- spec/gimme/resolves_methods_spec.rb
|
254
|
+
- spec/gimme/rspec_adapter_spec.rb
|
255
|
+
- spec/gimme/shared_examples/shared_gives_examples.rb
|
232
256
|
- spec/gimme/test_double_spec.rb
|
233
257
|
- spec/gimme/verifies_spec.rb
|
234
258
|
- spec/spec_helper.rb
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module Gimme
|
2
|
-
|
3
|
-
class MethodResolver
|
4
|
-
def self.resolve_sent_method(double,sym,args,raises_no_method_error=true)
|
5
|
-
cls = double.cls
|
6
|
-
sym = args.shift if sym == :send
|
7
|
-
if cls && raises_no_method_error
|
8
|
-
if cls.private_methods.include?(named(sym))
|
9
|
-
raise NoMethodError.new("#{sym} is a private method of your #{cls} test double, so stubbing/verifying it
|
10
|
-
might not be a great idea. If you want to try to stub or verify this method anyway, then you can
|
11
|
-
invoke give! or verify! to suppress this error.")
|
12
|
-
elsif !cls.instance_methods.include?(named(sym))
|
13
|
-
raise NoMethodError.new("Your test double of #{cls} may not know how to respond to the '#{sym}' method.
|
14
|
-
If you're confident that a real #{cls} will know how to respond to '#{sym}', then you can
|
15
|
-
invoke give! or verify! to suppress this error.")
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
sym
|
20
|
-
end
|
21
|
-
|
22
|
-
if RUBY_VERSION >= "1.9.2"
|
23
|
-
def self.named(sym)
|
24
|
-
sym
|
25
|
-
end
|
26
|
-
else
|
27
|
-
def self.named(sym)
|
28
|
-
sym.to_s
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|