rsubstitute 0.0.1 → 0.0.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/lib/rsubstitute.rb +7 -9
- data/test/rsubstitute_spec.rb +9 -3
- metadata +3 -3
data/lib/rsubstitute.rb
CHANGED
@@ -1,18 +1,16 @@
|
|
1
1
|
class Call
|
2
|
-
def initialize(method,
|
3
|
-
@method, @args
|
2
|
+
def initialize(method, args)
|
3
|
+
@method, @args = method, args
|
4
4
|
end
|
5
5
|
|
6
|
-
def matches(method,
|
6
|
+
def matches(method, args)
|
7
7
|
@method == method and args_match(args)
|
8
8
|
end
|
9
9
|
|
10
10
|
private
|
11
11
|
|
12
12
|
def args_match(args)
|
13
|
-
|
14
|
-
return false if @args.nil? or args.nil?
|
15
|
-
return @args <=> args
|
13
|
+
@args == args
|
16
14
|
end
|
17
15
|
end
|
18
16
|
|
@@ -40,13 +38,13 @@ class Substitute
|
|
40
38
|
def method_missing(method, *args, &block)
|
41
39
|
assert_was_received = @assert_next
|
42
40
|
@assert_next = false
|
43
|
-
if assert_was_received and not @calls.any? {|x| x.matches(method, args
|
41
|
+
if assert_was_received and not @calls.any? {|x| x.matches(method, args)}
|
44
42
|
raise "Call #{method} not received with specified args"
|
45
43
|
end
|
46
44
|
|
47
|
-
@calls << Call.new(method, args
|
45
|
+
@calls << Call.new(method, args)
|
48
46
|
matching_result_pair = @results.reverse.find do |x|
|
49
|
-
x[0].matches(method, args
|
47
|
+
x[0].matches(method, args)
|
50
48
|
end
|
51
49
|
if (matching_result_pair.nil?)
|
52
50
|
value_to_return = Object.new
|
data/test/rsubstitute_spec.rb
CHANGED
@@ -20,7 +20,13 @@ describe "when method is called on substitute" do
|
|
20
20
|
|
21
21
|
it "throws when the same method with different args was received" do
|
22
22
|
lambda {
|
23
|
-
@sub.received.some_method(
|
23
|
+
@sub.received.some_method(999)
|
24
|
+
}.should raise_exception
|
25
|
+
end
|
26
|
+
|
27
|
+
it "throws when the same method with different number of args was received" do
|
28
|
+
lambda {
|
29
|
+
@sub.received.some_method(123, 2345, 456)
|
24
30
|
}.should raise_exception
|
25
31
|
end
|
26
32
|
end
|
@@ -34,12 +40,12 @@ describe "when setting a return value for a method" do
|
|
34
40
|
|
35
41
|
it "returns that value when called" do
|
36
42
|
result = @sub.some_method(1)
|
37
|
-
result.should
|
43
|
+
result.should equal @value_to_return
|
38
44
|
end
|
39
45
|
|
40
46
|
it "returns something else when called with different args" do
|
41
47
|
result = @sub.some_method(2)
|
42
|
-
result.
|
48
|
+
result.should_not equal @value_to_return
|
43
49
|
end
|
44
50
|
|
45
51
|
it "returns a new value when a new value is set for the method" do
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 2
|
9
|
+
version: 0.0.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- David Tchepak
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-09-
|
17
|
+
date: 2010-09-10 00:00:00 +10:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|