gimme 0.3.1 → 0.3.2
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 +1 -1
- data/Gemfile.lock +1 -6
- data/README.markdown +17 -1
- data/Rakefile +20 -25
- data/VERSION +1 -1
- data/features/basics.feature +2 -2
- data/features/class_methods.feature +35 -0
- data/features/matchers.feature +14 -18
- data/features/readme.md +12 -1
- data/gimme.gemspec +15 -30
- data/lib/gimme/reset.rb +2 -6
- metadata +190 -150
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -13,7 +13,6 @@ GEM
|
|
13
13
|
ffi (1.0.11)
|
14
14
|
gherkin (2.9.0)
|
15
15
|
json (>= 1.4.6)
|
16
|
-
git (1.2.5)
|
17
16
|
growl (1.0.3)
|
18
17
|
guard (1.0.0)
|
19
18
|
ffi (>= 0.5.0)
|
@@ -23,10 +22,6 @@ GEM
|
|
23
22
|
guard (>= 0.8.3)
|
24
23
|
guard-rspec (0.6.0)
|
25
24
|
guard (>= 0.10.0)
|
26
|
-
jeweler (1.5.2)
|
27
|
-
bundler (~> 1.0.0)
|
28
|
-
git (>= 1.2.5)
|
29
|
-
rake
|
30
25
|
json (1.6.5)
|
31
26
|
method_source (0.7.0)
|
32
27
|
multi_json (1.1.0)
|
@@ -64,8 +59,8 @@ DEPENDENCIES
|
|
64
59
|
growl
|
65
60
|
guard-cucumber
|
66
61
|
guard-rspec
|
67
|
-
jeweler (~> 1.5.2)
|
68
62
|
pry
|
63
|
+
rake
|
69
64
|
rb-fsevent
|
70
65
|
rdoc
|
71
66
|
rspec
|
data/README.markdown
CHANGED
@@ -38,6 +38,22 @@ Next, wherever you set up your test environment, require gimme:
|
|
38
38
|
|
39
39
|
require 'gimme'
|
40
40
|
|
41
|
+
And if you're using RSpec, you can get doubled class methods to teardown appropriately by configuring gimme as your mock framework:
|
42
|
+
|
43
|
+
``` ruby
|
44
|
+
RSpec.configure do |config|
|
45
|
+
config.mock_framework = Gimme::RSpecAdapter
|
46
|
+
end
|
47
|
+
```
|
48
|
+
|
49
|
+
If you're introducing gimme to a suite that already uses another double library, you can just as well do this:
|
50
|
+
|
51
|
+
``` ruby
|
52
|
+
after(:each) do
|
53
|
+
Gimme.reset
|
54
|
+
end
|
55
|
+
```
|
56
|
+
|
41
57
|
### Creating a double
|
42
58
|
Once you're in your test or spec, to create a test double.
|
43
59
|
|
@@ -170,7 +186,7 @@ Here's an example where our Dog is again being doubled to facilitate some test,
|
|
170
186
|
|
171
187
|
dog.meow #=> :purr
|
172
188
|
|
173
|
-
We
|
189
|
+
We can accomplish the same thing using `verify!`:
|
174
190
|
|
175
191
|
dog = gimme(Dog)
|
176
192
|
|
data/Rakefile
CHANGED
@@ -1,32 +1,27 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
require 'rubygems'
|
3
|
-
require 'bundler'
|
4
|
-
begin
|
5
|
-
Bundler.setup(:default, :development)
|
6
|
-
rescue Bundler::BundlerError => e
|
7
|
-
$stderr.puts e.message
|
8
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
9
|
-
exit e.status_code
|
10
|
-
end
|
11
2
|
require 'rake'
|
12
3
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
gem.
|
27
|
-
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
8
|
+
gem.name = "gimme"
|
9
|
+
gem.homepage = "http://github.com/searls/gimme"
|
10
|
+
gem.license = "MIT"
|
11
|
+
gem.summary = %Q{gimme — a low-specification test double library for Ruby}
|
12
|
+
gem.description = %Q{gimme attempts to bring to Ruby a test double workflow akin to Mockito in Java. Major distinctions include preserving arrange-act-assert in tests, fast feedback for methods the double's real counterpart may not know how to respond to, no string/symbolic representations of methods, argument captors, and strong opinions (weakly held). }
|
13
|
+
gem.email = "searls@gmail.com"
|
14
|
+
gem.authors = ["Justin Searls"]
|
15
|
+
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
16
|
+
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
17
|
+
# gem.add_runtime_dependency 'jabber4r', '> 0.1'
|
18
|
+
gem.add_development_dependency "rspec", ">= 1.3.1"
|
19
|
+
gem.add_development_dependency "cucumber", ">= 0.10.0"
|
20
|
+
end
|
21
|
+
Jeweler::RubygemsDotOrgTasks.new
|
22
|
+
rescue LoadError
|
23
|
+
puts "`gem install jeweler` and run outside of bundler to do jeweler stuff. You can thank its dependency on bundler ~> 1.0.0 for this hack."
|
28
24
|
end
|
29
|
-
Jeweler::RubygemsDotOrgTasks.new
|
30
25
|
|
31
26
|
require 'rdoc/task'
|
32
27
|
RDoc::Task.new do |rdoc|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.2
|
data/features/basics.feature
CHANGED
@@ -16,7 +16,7 @@ Feature: basic usage
|
|
16
16
|
|
17
17
|
Scenario:
|
18
18
|
Given we have this existing code:
|
19
|
-
|
19
|
+
"""
|
20
20
|
class Apprentice
|
21
21
|
def slice(thing)
|
22
22
|
1000000.times.map do
|
@@ -37,7 +37,7 @@ Feature: basic usage
|
|
37
37
|
|
38
38
|
class Chef
|
39
39
|
def initialize(slicer = Apprentice.new, stove = Stove.new)
|
40
|
-
|
40
|
+
@slicer = slicer
|
41
41
|
@stove = stove
|
42
42
|
end
|
43
43
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
Feature: class methods
|
2
|
+
|
3
|
+
Scenario: stubbing and verifying behavior
|
4
|
+
Given we have this existing code:
|
5
|
+
"""
|
6
|
+
class Cat
|
7
|
+
def interact(type)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
class CatRepository
|
12
|
+
def self.find(cat_id)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
"""
|
16
|
+
When we want to write some tests to help us write this method:
|
17
|
+
"""
|
18
|
+
class ScratchesCat
|
19
|
+
def scratch(cat_id)
|
20
|
+
CatRepository.find(cat_id).interact(:scratch)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
"""
|
24
|
+
Then we can use gimme to isolate the unit under test:
|
25
|
+
"""
|
26
|
+
cat = gimme(Cat)
|
27
|
+
give(CatRepository).find(12) { cat }
|
28
|
+
|
29
|
+
ScratchesCat.new.scratch(12)
|
30
|
+
|
31
|
+
verify(cat).interact(:scratch)
|
32
|
+
|
33
|
+
# to clear any class method stubbings, do this:
|
34
|
+
Gimme.reset # in RSpec, Gimme::RSpecAdapter can do this on teardown for you.
|
35
|
+
"""
|
data/features/matchers.feature
CHANGED
@@ -13,7 +13,7 @@ Feature: argument matchers
|
|
13
13
|
<li>Defining your own matcher</li>
|
14
14
|
</ul>
|
15
15
|
|
16
|
-
In this example, we have a Mail object with a contents attribute. A DeliversMessages object adds Mail to
|
16
|
+
In this example, we have a Mail object with a contents attribute. A DeliversMessages object adds Mail to
|
17
17
|
Recipients' mailboxes and checks off each delivery on its Checklist.
|
18
18
|
|
19
19
|
|
@@ -54,22 +54,22 @@ Feature: argument matchers
|
|
54
54
|
end
|
55
55
|
"""
|
56
56
|
|
57
|
-
Scenario:
|
57
|
+
Scenario: stubbing with argument matchers
|
58
58
|
Then we can use gimme to isolate the unit under test:
|
59
59
|
"""
|
60
|
+
# pretend we want to ensure the #deliver function returns
|
61
|
+
# whatever the Checlist#check_off method returns. We can
|
62
|
+
# specify that by stubbing the check_off method
|
60
63
|
checklist = gimme(Checklist)
|
61
64
|
recipient = gimme(Recipient)
|
65
|
+
give(checklist).check_off(anything, anything, is_a(Time)) { "Pandas!" }
|
62
66
|
|
63
|
-
DeliversMessages.new(checklist).deliver("WHY HELLO GOOD SIR", recipient)
|
64
|
-
|
65
|
-
#without access (or interest in) the mail object, we can just check it was of type Mail
|
66
|
-
verify(recipient).add_to_mailbox(is_a(Mail))
|
67
|
+
result = DeliversMessages.new(checklist).deliver("WHY HELLO GOOD SIR", recipient)
|
67
68
|
|
68
|
-
|
69
|
+
result.should == "Pandas!"
|
69
70
|
"""
|
70
71
|
|
71
|
-
Scenario: using
|
72
|
-
|
72
|
+
Scenario: using some built-in matchers
|
73
73
|
Then we can use gimme to isolate the unit under test:
|
74
74
|
"""
|
75
75
|
checklist = gimme(Checklist)
|
@@ -77,8 +77,11 @@ Feature: argument matchers
|
|
77
77
|
|
78
78
|
DeliversMessages.new(checklist).deliver("WHY HELLO GOOD SIR", recipient)
|
79
79
|
|
80
|
-
#
|
81
|
-
verify(
|
80
|
+
verify(recipient).add_to_mailbox(is_a(Mail)) #would force a Mail instance
|
81
|
+
verify(recipient).add_to_mailbox(any(Mail)) #would also have allowed nil
|
82
|
+
|
83
|
+
verify(checklist).check_off(any(String), recipient, anything) #anything matches anything
|
84
|
+
|
82
85
|
"""
|
83
86
|
|
84
87
|
Scenario: using an argument captor to grab what was passed
|
@@ -102,7 +105,6 @@ Feature: argument matchers
|
|
102
105
|
|
103
106
|
DeliversMessages.new(checklist).deliver("WHY HELLO GOOD SIR", recipient)
|
104
107
|
|
105
|
-
|
106
108
|
class StartsWith
|
107
109
|
def initialize(expected)
|
108
110
|
@expected = expected
|
@@ -112,15 +114,9 @@ Feature: argument matchers
|
|
112
114
|
actual.start_with?(@expected)
|
113
115
|
end
|
114
116
|
end
|
115
|
-
|
116
|
-
verify(checklist).check_off(StartsWith.new("WHY"), anything, anything)
|
117
|
-
|
118
|
-
# or, of course, you could add a more natural method for your matcher
|
119
|
-
|
120
117
|
def starts_with(s)
|
121
118
|
StartsWith.new(s)
|
122
119
|
end
|
123
120
|
|
124
121
|
verify(checklist).check_off(starts_with("WHY"), anything, anything)
|
125
|
-
|
126
122
|
"""
|
data/features/readme.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
1
|
# gimme
|
2
2
|
|
3
|
-
Gimme is a test double library designed to help you write isolated unit specs for your Ruby code.
|
3
|
+
Gimme is a test double library designed to help you write isolated unit specs for your Ruby code.
|
4
|
+
|
5
|
+
Here are a few examples:
|
6
|
+
|
7
|
+
* [Basic usage](https://www.relishapp.com/searls/gimme/docs/basic-usage)
|
8
|
+
* [Argument matchers](https://www.relishapp.com/searls/gimme/docs/argument-matchers) (and argument captors)
|
9
|
+
* [Stubbing and verifying class methods](https://www.relishapp.com/searls/gimme/docs/class-methods)
|
10
|
+
|
11
|
+
Todo:
|
12
|
+
|
13
|
+
* Overriding method existence checks with ! (e.g. `give!()` or `verify!()`)
|
14
|
+
* Stubbing the next `new`'ing of a type (e.g. `gimme_next(Dog)` )
|
data/gimme.gemspec
CHANGED
@@ -4,14 +4,14 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.3.
|
7
|
+
s.name = "gimme"
|
8
|
+
s.version = "0.3.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
11
|
+
s.authors = ["Justin Searls"]
|
12
|
+
s.date = "2012-03-31"
|
13
|
+
s.description = "gimme attempts to bring to Ruby a test double workflow akin to Mockito in Java. Major distinctions include preserving arrange-act-assert in tests, fast feedback for methods the double's real counterpart may not know how to respond to, no string/symbolic representations of methods, argument captors, and strong opinions (weakly held). "
|
14
|
+
s.email = "searls@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE.txt",
|
17
17
|
"README.markdown",
|
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
|
|
29
29
|
"Rakefile",
|
30
30
|
"VERSION",
|
31
31
|
"features/basics.feature",
|
32
|
+
"features/class_methods.feature",
|
32
33
|
"features/matchers.feature",
|
33
34
|
"features/old/argument_captors.feature",
|
34
35
|
"features/old/gimme_next.feature",
|
@@ -82,27 +83,11 @@ Gem::Specification.new do |s|
|
|
82
83
|
"spec/gimme/verifies_spec.rb",
|
83
84
|
"spec/spec_helper.rb"
|
84
85
|
]
|
85
|
-
s.homepage =
|
86
|
-
s.licenses = [
|
87
|
-
s.require_paths = [
|
88
|
-
s.rubygems_version =
|
89
|
-
s.summary =
|
90
|
-
s.test_files = [
|
91
|
-
"spec/gimme/captor_spec.rb",
|
92
|
-
"spec/gimme/errors_spec.rb",
|
93
|
-
"spec/gimme/gives_class_methods_spec.rb",
|
94
|
-
"spec/gimme/gives_spec.rb",
|
95
|
-
"spec/gimme/matchers_spec.rb",
|
96
|
-
"spec/gimme/resolves_methods_spec.rb",
|
97
|
-
"spec/gimme/rspec_adapter_spec.rb",
|
98
|
-
"spec/gimme/shared_examples/shared_gives_examples.rb",
|
99
|
-
"spec/gimme/shared_examples/shared_verifies_examples.rb",
|
100
|
-
"spec/gimme/spies_on_class_method_spec.rb",
|
101
|
-
"spec/gimme/test_double_spec.rb",
|
102
|
-
"spec/gimme/verifies_class_methods_spec.rb",
|
103
|
-
"spec/gimme/verifies_spec.rb",
|
104
|
-
"spec/spec_helper.rb"
|
105
|
-
]
|
86
|
+
s.homepage = "http://github.com/searls/gimme"
|
87
|
+
s.licenses = ["MIT"]
|
88
|
+
s.require_paths = ["lib"]
|
89
|
+
s.rubygems_version = "1.8.10"
|
90
|
+
s.summary = "gimme \342\200\224\302\240a low-specification test double library for Ruby"
|
106
91
|
|
107
92
|
if s.respond_to? :specification_version then
|
108
93
|
s.specification_version = 3
|
@@ -110,7 +95,7 @@ Gem::Specification.new do |s|
|
|
110
95
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
111
96
|
s.add_development_dependency(%q<pry>, [">= 0"])
|
112
97
|
s.add_development_dependency(%q<rdoc>, [">= 0"])
|
113
|
-
s.add_development_dependency(%q<
|
98
|
+
s.add_development_dependency(%q<rake>, [">= 0"])
|
114
99
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
115
100
|
s.add_development_dependency(%q<rspec-given>, [">= 0"])
|
116
101
|
s.add_development_dependency(%q<cucumber>, [">= 0"])
|
@@ -124,7 +109,7 @@ Gem::Specification.new do |s|
|
|
124
109
|
else
|
125
110
|
s.add_dependency(%q<pry>, [">= 0"])
|
126
111
|
s.add_dependency(%q<rdoc>, [">= 0"])
|
127
|
-
s.add_dependency(%q<
|
112
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
128
113
|
s.add_dependency(%q<rspec>, [">= 0"])
|
129
114
|
s.add_dependency(%q<rspec-given>, [">= 0"])
|
130
115
|
s.add_dependency(%q<cucumber>, [">= 0"])
|
@@ -139,7 +124,7 @@ Gem::Specification.new do |s|
|
|
139
124
|
else
|
140
125
|
s.add_dependency(%q<pry>, [">= 0"])
|
141
126
|
s.add_dependency(%q<rdoc>, [">= 0"])
|
142
|
-
s.add_dependency(%q<
|
127
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
143
128
|
s.add_dependency(%q<rspec>, [">= 0"])
|
144
129
|
s.add_dependency(%q<rspec-given>, [">= 0"])
|
145
130
|
s.add_dependency(%q<cucumber>, [">= 0"])
|
data/lib/gimme/reset.rb
CHANGED
@@ -11,11 +11,7 @@ module Gimme
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.reset
|
14
|
-
@@stuff_to_do_on_reset.delete_if
|
15
|
-
|
16
|
-
end
|
17
|
-
@@stuff_to_do_on_every_reset.each do |stuff|
|
18
|
-
stuff.call
|
19
|
-
end
|
14
|
+
@@stuff_to_do_on_reset.delete_if { |stuff| stuff.call || true }
|
15
|
+
@@stuff_to_do_on_every_reset.each { |stuff| stuff.call }
|
20
16
|
end
|
21
17
|
end
|
metadata
CHANGED
@@ -1,172 +1,219 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: gimme
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
- 2
|
10
|
+
version: 0.3.2
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Justin Searls
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
+
|
18
|
+
date: 2012-03-31 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
17
22
|
none: false
|
18
|
-
requirements:
|
19
|
-
- -
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
hash: 3
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
version: "0"
|
30
|
+
requirement: *id001
|
31
|
+
prerelease: false
|
32
|
+
name: pry
|
22
33
|
type: :development
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
hash: 3
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
version: "0"
|
44
|
+
requirement: *id002
|
23
45
|
prerelease: false
|
24
|
-
version_requirements: *890335710
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
46
|
name: rdoc
|
27
|
-
requirement: &890335450 !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
29
|
-
requirements:
|
30
|
-
- - ! '>='
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '0'
|
33
47
|
type: :development
|
34
|
-
|
35
|
-
version_requirements:
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: jeweler
|
38
|
-
requirement: &890335170 !ruby/object:Gem::Requirement
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
hash: 3
|
55
|
+
segments:
|
56
|
+
- 0
|
57
|
+
version: "0"
|
58
|
+
requirement: *id003
|
59
|
+
prerelease: false
|
60
|
+
name: rake
|
44
61
|
type: :development
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
hash: 3
|
69
|
+
segments:
|
70
|
+
- 0
|
71
|
+
version: "0"
|
72
|
+
requirement: *id004
|
45
73
|
prerelease: false
|
46
|
-
version_requirements: *890335170
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
74
|
name: rspec
|
49
|
-
requirement: &890334920 !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
|
-
requirements:
|
52
|
-
- - ! '>='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
75
|
type: :development
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
hash: 3
|
83
|
+
segments:
|
84
|
+
- 0
|
85
|
+
version: "0"
|
86
|
+
requirement: *id005
|
56
87
|
prerelease: false
|
57
|
-
version_requirements: *890334920
|
58
|
-
- !ruby/object:Gem::Dependency
|
59
88
|
name: rspec-given
|
60
|
-
requirement: &890334650 !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
62
|
-
requirements:
|
63
|
-
- - ! '>='
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version: '0'
|
66
89
|
type: :development
|
90
|
+
- !ruby/object:Gem::Dependency
|
91
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
92
|
+
none: false
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
hash: 3
|
97
|
+
segments:
|
98
|
+
- 0
|
99
|
+
version: "0"
|
100
|
+
requirement: *id006
|
67
101
|
prerelease: false
|
68
|
-
version_requirements: *890334650
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
102
|
name: cucumber
|
71
|
-
requirement: &890334380 !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
|
-
requirements:
|
74
|
-
- - ! '>='
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '0'
|
77
103
|
type: :development
|
104
|
+
- !ruby/object:Gem::Dependency
|
105
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
hash: 3
|
111
|
+
segments:
|
112
|
+
- 0
|
113
|
+
version: "0"
|
114
|
+
requirement: *id007
|
78
115
|
prerelease: false
|
79
|
-
version_requirements: *890334380
|
80
|
-
- !ruby/object:Gem::Dependency
|
81
116
|
name: simplecov
|
82
|
-
requirement: &890334130 !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
|
-
requirements:
|
85
|
-
- - ! '>='
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
version: '0'
|
88
117
|
type: :development
|
118
|
+
- !ruby/object:Gem::Dependency
|
119
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
120
|
+
none: false
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
hash: 3
|
125
|
+
segments:
|
126
|
+
- 0
|
127
|
+
version: "0"
|
128
|
+
requirement: *id008
|
89
129
|
prerelease: false
|
90
|
-
version_requirements: *890334130
|
91
|
-
- !ruby/object:Gem::Dependency
|
92
130
|
name: guard-cucumber
|
93
|
-
requirement: &890333880 !ruby/object:Gem::Requirement
|
94
|
-
none: false
|
95
|
-
requirements:
|
96
|
-
- - ! '>='
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version: '0'
|
99
131
|
type: :development
|
132
|
+
- !ruby/object:Gem::Dependency
|
133
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
134
|
+
none: false
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
hash: 3
|
139
|
+
segments:
|
140
|
+
- 0
|
141
|
+
version: "0"
|
142
|
+
requirement: *id009
|
100
143
|
prerelease: false
|
101
|
-
version_requirements: *890333880
|
102
|
-
- !ruby/object:Gem::Dependency
|
103
144
|
name: guard-rspec
|
104
|
-
requirement: &890333610 !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
145
|
type: :development
|
146
|
+
- !ruby/object:Gem::Dependency
|
147
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
148
|
+
none: false
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
hash: 3
|
153
|
+
segments:
|
154
|
+
- 0
|
155
|
+
version: "0"
|
156
|
+
requirement: *id010
|
111
157
|
prerelease: false
|
112
|
-
version_requirements: *890333610
|
113
|
-
- !ruby/object:Gem::Dependency
|
114
158
|
name: growl
|
115
|
-
requirement: &890333370 !ruby/object:Gem::Requirement
|
116
|
-
none: false
|
117
|
-
requirements:
|
118
|
-
- - ! '>='
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
version: '0'
|
121
159
|
type: :development
|
160
|
+
- !ruby/object:Gem::Dependency
|
161
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
162
|
+
none: false
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
hash: 3
|
167
|
+
segments:
|
168
|
+
- 0
|
169
|
+
version: "0"
|
170
|
+
requirement: *id011
|
122
171
|
prerelease: false
|
123
|
-
version_requirements: *890333370
|
124
|
-
- !ruby/object:Gem::Dependency
|
125
172
|
name: rb-fsevent
|
126
|
-
requirement: &890333130 !ruby/object:Gem::Requirement
|
127
|
-
none: false
|
128
|
-
requirements:
|
129
|
-
- - ! '>='
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
173
|
type: :development
|
133
|
-
|
134
|
-
version_requirements:
|
135
|
-
- !ruby/object:Gem::Dependency
|
136
|
-
name: rspec
|
137
|
-
requirement: &890332880 !ruby/object:Gem::Requirement
|
174
|
+
- !ruby/object:Gem::Dependency
|
175
|
+
version_requirements: &id012 !ruby/object:Gem::Requirement
|
138
176
|
none: false
|
139
|
-
requirements:
|
140
|
-
- -
|
141
|
-
- !ruby/object:Gem::Version
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
hash: 25
|
181
|
+
segments:
|
182
|
+
- 1
|
183
|
+
- 3
|
184
|
+
- 1
|
142
185
|
version: 1.3.1
|
143
|
-
|
186
|
+
requirement: *id012
|
144
187
|
prerelease: false
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
188
|
+
name: rspec
|
189
|
+
type: :development
|
190
|
+
- !ruby/object:Gem::Dependency
|
191
|
+
version_requirements: &id013 !ruby/object:Gem::Requirement
|
149
192
|
none: false
|
150
|
-
requirements:
|
151
|
-
- -
|
152
|
-
- !ruby/object:Gem::Version
|
193
|
+
requirements:
|
194
|
+
- - ">="
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
hash: 55
|
197
|
+
segments:
|
198
|
+
- 0
|
199
|
+
- 10
|
200
|
+
- 0
|
153
201
|
version: 0.10.0
|
154
|
-
|
202
|
+
requirement: *id013
|
155
203
|
prerelease: false
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
feedback for methods the double''s real counterpart may not know how to respond
|
160
|
-
to, no string/symbolic representations of methods, argument captors, and strong
|
161
|
-
opinions (weakly held). '
|
204
|
+
name: cucumber
|
205
|
+
type: :development
|
206
|
+
description: "gimme attempts to bring to Ruby a test double workflow akin to Mockito in Java. Major distinctions include preserving arrange-act-assert in tests, fast feedback for methods the double's real counterpart may not know how to respond to, no string/symbolic representations of methods, argument captors, and strong opinions (weakly held). "
|
162
207
|
email: searls@gmail.com
|
163
208
|
executables: []
|
209
|
+
|
164
210
|
extensions: []
|
165
|
-
|
211
|
+
|
212
|
+
extra_rdoc_files:
|
166
213
|
- LICENSE.txt
|
167
214
|
- README.markdown
|
168
215
|
- README.rdoc
|
169
|
-
files:
|
216
|
+
files:
|
170
217
|
- .document
|
171
218
|
- .travis.yml
|
172
219
|
- Gemfile
|
@@ -178,6 +225,7 @@ files:
|
|
178
225
|
- Rakefile
|
179
226
|
- VERSION
|
180
227
|
- features/basics.feature
|
228
|
+
- features/class_methods.feature
|
181
229
|
- features/matchers.feature
|
182
230
|
- features/old/argument_captors.feature
|
183
231
|
- features/old/gimme_next.feature
|
@@ -231,45 +279,37 @@ files:
|
|
231
279
|
- spec/gimme/verifies_spec.rb
|
232
280
|
- spec/spec_helper.rb
|
233
281
|
homepage: http://github.com/searls/gimme
|
234
|
-
licenses:
|
282
|
+
licenses:
|
235
283
|
- MIT
|
236
284
|
post_install_message:
|
237
285
|
rdoc_options: []
|
238
|
-
|
286
|
+
|
287
|
+
require_paths:
|
239
288
|
- lib
|
240
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
289
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
241
290
|
none: false
|
242
|
-
requirements:
|
243
|
-
- -
|
244
|
-
- !ruby/object:Gem::Version
|
245
|
-
|
246
|
-
segments:
|
291
|
+
requirements:
|
292
|
+
- - ">="
|
293
|
+
- !ruby/object:Gem::Version
|
294
|
+
hash: 3
|
295
|
+
segments:
|
247
296
|
- 0
|
248
|
-
|
249
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
297
|
+
version: "0"
|
298
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
250
299
|
none: false
|
251
|
-
requirements:
|
252
|
-
- -
|
253
|
-
- !ruby/object:Gem::Version
|
254
|
-
|
300
|
+
requirements:
|
301
|
+
- - ">="
|
302
|
+
- !ruby/object:Gem::Version
|
303
|
+
hash: 3
|
304
|
+
segments:
|
305
|
+
- 0
|
306
|
+
version: "0"
|
255
307
|
requirements: []
|
308
|
+
|
256
309
|
rubyforge_project:
|
257
|
-
rubygems_version: 1.8.
|
310
|
+
rubygems_version: 1.8.10
|
258
311
|
signing_key:
|
259
312
|
specification_version: 3
|
260
|
-
summary: gimme
|
261
|
-
test_files:
|
262
|
-
|
263
|
-
- spec/gimme/errors_spec.rb
|
264
|
-
- spec/gimme/gives_class_methods_spec.rb
|
265
|
-
- spec/gimme/gives_spec.rb
|
266
|
-
- spec/gimme/matchers_spec.rb
|
267
|
-
- spec/gimme/resolves_methods_spec.rb
|
268
|
-
- spec/gimme/rspec_adapter_spec.rb
|
269
|
-
- spec/gimme/shared_examples/shared_gives_examples.rb
|
270
|
-
- spec/gimme/shared_examples/shared_verifies_examples.rb
|
271
|
-
- spec/gimme/spies_on_class_method_spec.rb
|
272
|
-
- spec/gimme/test_double_spec.rb
|
273
|
-
- spec/gimme/verifies_class_methods_spec.rb
|
274
|
-
- spec/gimme/verifies_spec.rb
|
275
|
-
- spec/spec_helper.rb
|
313
|
+
summary: "gimme \xE2\x80\x94\xC2\xA0a low-specification test double library for Ruby"
|
314
|
+
test_files: []
|
315
|
+
|