micro_mock 0.1.2 → 1.0.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 +13 -11
- data/lib/micro_mock/version.rb +1 -1
- data/lib/micro_mock.rb +1 -2
- metadata +2 -2
data/README.md
CHANGED
@@ -2,8 +2,10 @@
|
|
2
2
|
|
3
3
|
### Perhaps the lightest mocking strategy available
|
4
4
|
|
5
|
-
Calling it a mocking script is a bit of a misnomer since its really a dynamic class generator
|
6
|
-
|
5
|
+
Calling it a mocking script is a bit of a misnomer since its really a dynamic class generator...
|
6
|
+
and mocking with real behavior proves quite handy.
|
7
|
+
|
8
|
+
*Be sure to checkout [MicroTest](https://github.com/hopsoft/micro_test) for a lightweight test framework with similar goals.*
|
7
9
|
|
8
10
|
## Intall
|
9
11
|
|
@@ -24,7 +26,7 @@ MyMock.attr(:foo)
|
|
24
26
|
MyMock.attr(:attr_with_default, "Class value")
|
25
27
|
|
26
28
|
# add a class method
|
27
|
-
MyMock.
|
29
|
+
MyMock.def(:say_foo) { |arg| "#{foo} #{arg}!" }
|
28
30
|
|
29
31
|
# create a mock instance
|
30
32
|
mock = MyMock.new
|
@@ -36,7 +38,7 @@ mock.attr(:bar)
|
|
36
38
|
mock.attr(:attr_with_default, "Instance value")
|
37
39
|
|
38
40
|
# add an instance method
|
39
|
-
mock.
|
41
|
+
mock.def(:say_bar) { |arg| "#{bar} #{arg}!" }
|
40
42
|
|
41
43
|
# use the mock
|
42
44
|
MyMock.attr_with_default # => "Class value"
|
@@ -71,7 +73,7 @@ list.concat [1, 2, 3]
|
|
71
73
|
list.reverse_string # => "3,2,1"
|
72
74
|
|
73
75
|
# add an instance method that does something interesting
|
74
|
-
list.
|
76
|
+
list.def :prefixed do |prefix|
|
75
77
|
map { |value| "#{prefix}:#{value}"}
|
76
78
|
end
|
77
79
|
list.prefixed(:num) # => ["num:1", "num:2", "num:3"]
|
@@ -84,12 +86,12 @@ Here is an example that mocks part of ActiveRecord.
|
|
84
86
|
```ruby
|
85
87
|
Model = MicroMock.make
|
86
88
|
model = Model.new
|
87
|
-
model.
|
88
|
-
model.
|
89
|
-
model.
|
90
|
-
model.
|
91
|
-
Model.
|
92
|
-
Model.
|
89
|
+
model.def(:destroy) { @destroyed = true }
|
90
|
+
model.def(:destroyed?) { @destroyed }
|
91
|
+
model.def(:update_attributes) { |*args| @attributes_updated = true }
|
92
|
+
model.def(:save) { |*args| @saved = true }
|
93
|
+
Model.def(:find) { |*args| model.clone }
|
94
|
+
Model.def(:all) { (1..5).map { model.clone } }
|
93
95
|
|
94
96
|
# try it out
|
95
97
|
list = Model.all # => [#<MicroMock70331390241500:0x007fee9b1b1bb0 @args=[]>, #<MicroMock...]
|
data/lib/micro_mock/version.rb
CHANGED
data/lib/micro_mock.rb
CHANGED
@@ -30,10 +30,9 @@ module MicroMock
|
|
30
30
|
# Creates a method.
|
31
31
|
# @param [Symbol] name The name of the method.
|
32
32
|
# @yield The block that will serve as the method body.
|
33
|
-
def
|
33
|
+
def def(name, &block)
|
34
34
|
context.send :define_method, name, &block
|
35
35
|
end
|
36
|
-
alias_method :stub, :meth
|
37
36
|
|
38
37
|
private
|
39
38
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: micro_mock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.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:
|
12
|
+
date: 2013-01-15 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: ! ' Perhaps the lightest mocking strategy available.
|
15
15
|
|