grasshopper 0.2.0 → 0.3.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/README.md +31 -2
- data/lib/grasshopper.rb +23 -7
- metadata +3 -3
data/README.md
CHANGED
@@ -1,8 +1,37 @@
|
|
1
1
|
# Grasshopper
|
2
2
|
|
3
|
-
A tiny mocking framework based on Mockito
|
3
|
+
A tiny mocking framework based on [Mockito](http://code.google.com/p/mockito/). I built it so that I could write unit tests in the [Arrage-Act-Assert](http://c2.com/cgi/wiki?ArrangeActAssert) style.
|
4
4
|
|
5
|
-
|
5
|
+
## Examples
|
6
|
+
|
7
|
+
For more examples, see the [unit tests](https://github.com/mattraibert/grasshopper/blob/master/test/grasshopper_test.rb)
|
8
|
+
|
9
|
+
### Mock
|
10
|
+
|
11
|
+
Mock is a person who listens carefully but never says anything. You say anything to Mock, but you'll only get crickets back.
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
mock = Mock.new
|
15
|
+
mock.hello #=> nil
|
16
|
+
mock.how_are_you? #=> nil
|
17
|
+
Mock.verify(mock).hello # yes, someone did tell me hello.
|
18
|
+
Mock.verify(mock).goodbye # wait(AssertionFailed)! they left without saying goodbye!
|
19
|
+
```
|
20
|
+
|
21
|
+
### Stub
|
22
|
+
|
23
|
+
Stub is a person who holds something for you and gives it to anyone who knows how to ask. You can ask Stub for anything, but you'll only get what you put into it.
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
stub = Stub.new
|
27
|
+
Stub.when(stub.keys).then_return([:door_key, :mail_key])
|
28
|
+
Stub.when(stub.money("gimmie")).then_return(5)
|
29
|
+
stub.keys #=> [:door_key, :mail_key]
|
30
|
+
stub.money("gimmie") #=> 5
|
31
|
+
stub.monkey #=> nil
|
32
|
+
```
|
33
|
+
|
34
|
+
## Naming
|
6
35
|
|
7
36
|
Grasshopper is named for a [restaurant](http://grasshoppervegan.com/) in Allston, MA that serves up all sorts of great mocks.
|
8
37
|
|
data/lib/grasshopper.rb
CHANGED
@@ -24,17 +24,33 @@ class Mock
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
class StubHelper
|
28
|
+
def initialize(stub, message)
|
29
|
+
@stub = stub
|
30
|
+
@message = message
|
31
|
+
end
|
32
|
+
|
33
|
+
def then_return(retval)
|
34
|
+
@stub.add_a_stub(@message, retval)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
27
38
|
class Stub
|
28
|
-
def initialize
|
29
|
-
@stubs =
|
39
|
+
def initialize
|
40
|
+
@stubs = {}
|
30
41
|
end
|
31
42
|
|
32
|
-
def
|
33
|
-
|
34
|
-
|
43
|
+
def add_a_stub(message, retval)
|
44
|
+
@stubs[message] = retval
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.when(whatever)
|
48
|
+
StubHelper.new(@@stub, @@message)
|
35
49
|
end
|
36
50
|
|
37
|
-
def
|
38
|
-
|
51
|
+
def method_missing(sym, *args)
|
52
|
+
@@stub = self
|
53
|
+
@@message = [sym, args]
|
54
|
+
@stubs[[sym, args]]
|
39
55
|
end
|
40
56
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grasshopper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: minitest
|
@@ -101,7 +101,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
101
101
|
version: '0'
|
102
102
|
segments:
|
103
103
|
- 0
|
104
|
-
hash:
|
104
|
+
hash: 504949561135609211
|
105
105
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|