minispec 0.0.1
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.
- checksums.yaml +7 -0
- data/.pryrc +2 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +2140 -0
- data/Rakefile +11 -0
- data/bin/minispec +4 -0
- data/lib/minispec.rb +175 -0
- data/lib/minispec/api.rb +2 -0
- data/lib/minispec/api/class.rb +195 -0
- data/lib/minispec/api/class/after.rb +49 -0
- data/lib/minispec/api/class/around.rb +54 -0
- data/lib/minispec/api/class/before.rb +101 -0
- data/lib/minispec/api/class/helpers.rb +116 -0
- data/lib/minispec/api/class/let.rb +44 -0
- data/lib/minispec/api/class/tests.rb +33 -0
- data/lib/minispec/api/instance.rb +158 -0
- data/lib/minispec/api/instance/mocks/doubles.rb +36 -0
- data/lib/minispec/api/instance/mocks/mocks.rb +319 -0
- data/lib/minispec/api/instance/mocks/spies.rb +17 -0
- data/lib/minispec/api/instance/mocks/stubs.rb +105 -0
- data/lib/minispec/helpers.rb +1 -0
- data/lib/minispec/helpers/array.rb +56 -0
- data/lib/minispec/helpers/booleans.rb +108 -0
- data/lib/minispec/helpers/generic.rb +24 -0
- data/lib/minispec/helpers/mocks/expectations.rb +29 -0
- data/lib/minispec/helpers/mocks/spies.rb +36 -0
- data/lib/minispec/helpers/raise.rb +44 -0
- data/lib/minispec/helpers/throw.rb +29 -0
- data/lib/minispec/mocks.rb +11 -0
- data/lib/minispec/mocks/expectations.rb +77 -0
- data/lib/minispec/mocks/stubs.rb +178 -0
- data/lib/minispec/mocks/validations.rb +80 -0
- data/lib/minispec/mocks/validations/amount.rb +63 -0
- data/lib/minispec/mocks/validations/arguments.rb +161 -0
- data/lib/minispec/mocks/validations/caller.rb +43 -0
- data/lib/minispec/mocks/validations/order.rb +47 -0
- data/lib/minispec/mocks/validations/raise.rb +111 -0
- data/lib/minispec/mocks/validations/return.rb +74 -0
- data/lib/minispec/mocks/validations/throw.rb +91 -0
- data/lib/minispec/mocks/validations/yield.rb +141 -0
- data/lib/minispec/proxy.rb +201 -0
- data/lib/minispec/reporter.rb +185 -0
- data/lib/minispec/utils.rb +139 -0
- data/lib/minispec/utils/differ.rb +325 -0
- data/lib/minispec/utils/pretty_print.rb +51 -0
- data/lib/minispec/utils/raise.rb +123 -0
- data/lib/minispec/utils/throw.rb +140 -0
- data/minispec.gemspec +27 -0
- data/test/mocks/expectations/amount.rb +67 -0
- data/test/mocks/expectations/arguments.rb +126 -0
- data/test/mocks/expectations/caller.rb +55 -0
- data/test/mocks/expectations/generic.rb +35 -0
- data/test/mocks/expectations/order.rb +46 -0
- data/test/mocks/expectations/raise.rb +166 -0
- data/test/mocks/expectations/return.rb +71 -0
- data/test/mocks/expectations/throw.rb +113 -0
- data/test/mocks/expectations/yield.rb +109 -0
- data/test/mocks/spies/amount.rb +68 -0
- data/test/mocks/spies/arguments.rb +57 -0
- data/test/mocks/spies/generic.rb +61 -0
- data/test/mocks/spies/order.rb +38 -0
- data/test/mocks/spies/raise.rb +158 -0
- data/test/mocks/spies/return.rb +71 -0
- data/test/mocks/spies/throw.rb +113 -0
- data/test/mocks/spies/yield.rb +101 -0
- data/test/mocks/test__doubles.rb +98 -0
- data/test/mocks/test__expectations.rb +27 -0
- data/test/mocks/test__mocks.rb +197 -0
- data/test/mocks/test__proxies.rb +61 -0
- data/test/mocks/test__spies.rb +43 -0
- data/test/mocks/test__stubs.rb +427 -0
- data/test/proxified_asserts.rb +34 -0
- data/test/setup.rb +53 -0
- data/test/test__around.rb +58 -0
- data/test/test__assert.rb +510 -0
- data/test/test__before_and_after.rb +117 -0
- data/test/test__before_and_after_all.rb +71 -0
- data/test/test__helpers.rb +197 -0
- data/test/test__raise.rb +104 -0
- data/test/test__skip.rb +41 -0
- data/test/test__throw.rb +103 -0
- metadata +196 -0
@@ -0,0 +1,109 @@
|
|
1
|
+
class MinispecTest::Expectations::Unit
|
2
|
+
|
3
|
+
should 'pass when yield expected and occurred' do
|
4
|
+
expect(o).to_receive(:y).and_yield
|
5
|
+
o.y {|a,b|}
|
6
|
+
end
|
7
|
+
|
8
|
+
should 'pass when yield not expected and not occurred' do
|
9
|
+
o = Class.new { def y; end }.new
|
10
|
+
expect(o).to_receive(:y).without_yield
|
11
|
+
o.y
|
12
|
+
end
|
13
|
+
|
14
|
+
should ':fail when yield expected but not occurred' do
|
15
|
+
expect(o).to_receive(:a).and_yield
|
16
|
+
o.a
|
17
|
+
end
|
18
|
+
|
19
|
+
should ':fail when yield occurred but not expected' do
|
20
|
+
expect(o).to_receive(:y).without_yield
|
21
|
+
o.y {|a,b|}
|
22
|
+
end
|
23
|
+
|
24
|
+
should 'pass when yielded with expected arguments' do
|
25
|
+
expect(o).to_receive(:y).and_yield(1, 2)
|
26
|
+
o.y {|a, b|}
|
27
|
+
end
|
28
|
+
|
29
|
+
should 'flatten arguments when single value expected' do
|
30
|
+
o.define_singleton_method(:y) {|&b| b.call(1)}
|
31
|
+
expect(o).to_receive(:y).and_yield(1)
|
32
|
+
o.y {|a, b|}
|
33
|
+
end
|
34
|
+
|
35
|
+
should ':fail when yielded with wrong arguments' do
|
36
|
+
expect(o).to_receive(:y).and_yield(4, 5)
|
37
|
+
o.y {|a, b|}
|
38
|
+
end
|
39
|
+
|
40
|
+
should 'pass when proc validates yielded arguments' do
|
41
|
+
expect(o).to_receive(:y).and_yield {|args| args[0] == [1, 2]}
|
42
|
+
o.y {|a, b|}
|
43
|
+
end
|
44
|
+
|
45
|
+
should ':fail when proc does not validate yielded arguments' do
|
46
|
+
expect(o).to_receive(:y).and_yield {false}
|
47
|
+
o.y {|a, b|}
|
48
|
+
end
|
49
|
+
|
50
|
+
should 'not raise when arity not respected and proc used' do
|
51
|
+
expect(o).to_receive(:y)
|
52
|
+
assure { o.y {|a|} }.does_not.raise
|
53
|
+
end
|
54
|
+
|
55
|
+
should 'raise when arity not respected and lambda used' do
|
56
|
+
expect(o).to_receive(:y)
|
57
|
+
does { o.y(&lambda {|a|}) }.raise? ArgumentError, /2 for 1/
|
58
|
+
end
|
59
|
+
|
60
|
+
should 'use same expectation for all messages' do
|
61
|
+
expect(o).to_receive(:y, :x).and_yield([1, 2])
|
62
|
+
o.y {|a,b|}
|
63
|
+
o.x {|a,b|}
|
64
|
+
end
|
65
|
+
|
66
|
+
should 'pass when multiple yielded arguments match expected ones' do
|
67
|
+
expect(o).to_receive(:y, :x).and_yield([1, 2], [1, 2])
|
68
|
+
o.y {|a,b|}
|
69
|
+
o.x {|a,b|}
|
70
|
+
end
|
71
|
+
|
72
|
+
should 'flatten arguments when some message expects a single value' do
|
73
|
+
o.define_singleton_method(:y) {|&b| b.call(1)}
|
74
|
+
expect(o).to_receive(:y, :x).and_yield(1, [1, 2])
|
75
|
+
o.y {|a,b|}
|
76
|
+
o.x {|a,b|}
|
77
|
+
end
|
78
|
+
|
79
|
+
should 'NOT flatten arguments when validated by a block' do
|
80
|
+
o.define_singleton_method(:y) {|&b| b.call(1)}
|
81
|
+
expect(o).to_receive(:y, :x).and_yield {|y,x| y[0] == [1] && x[0] == [1, 2]}
|
82
|
+
o.y {|a,b|}
|
83
|
+
o.x {|a,b|}
|
84
|
+
end
|
85
|
+
|
86
|
+
should ':fail when at least one message does not yield as expected' do
|
87
|
+
expect(o).to_receive(:y, :x).and_yield([1, 2], 0)
|
88
|
+
o.y {|a,b|}
|
89
|
+
o.x {|a,b|}
|
90
|
+
end
|
91
|
+
|
92
|
+
should ':fail when proc does not validate multiple yielded arguments' do
|
93
|
+
expect(o).to_receive(:y, :x).and_yield {false}
|
94
|
+
o.y {|a,b|}
|
95
|
+
o.x {|a,b|}
|
96
|
+
end
|
97
|
+
|
98
|
+
should ':fail when multiple yields expected but none occurred' do
|
99
|
+
expect(o).to_receive(:a, :b).and_yield
|
100
|
+
o.a
|
101
|
+
o.b
|
102
|
+
end
|
103
|
+
|
104
|
+
should ':fail when at least one yield occurred but none expected' do
|
105
|
+
expect(o).to_receive(:a, :x).without_yield
|
106
|
+
o.a {}
|
107
|
+
o.x {|a,b|}
|
108
|
+
end
|
109
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
class MinispecTest::Spies::Unit
|
2
|
+
|
3
|
+
should 'pass when received expected amount' do
|
4
|
+
o.a
|
5
|
+
o.a
|
6
|
+
expect(o).received(:a).count(2)
|
7
|
+
end
|
8
|
+
|
9
|
+
should ':fail when wrong amount expected' do
|
10
|
+
o.a
|
11
|
+
expect(o).received(:a).count(2)
|
12
|
+
end
|
13
|
+
|
14
|
+
should 'pass when proc validates received amount' do
|
15
|
+
o.a
|
16
|
+
o.a
|
17
|
+
expect(o).received(:a).count {|received| received == 2}
|
18
|
+
end
|
19
|
+
|
20
|
+
should ':fail when proc does not validate received amount' do
|
21
|
+
o.a
|
22
|
+
expect(o).received(:a).count {|received| false}
|
23
|
+
end
|
24
|
+
|
25
|
+
should 'pass when multiple messages uses one expectation' do
|
26
|
+
o.a
|
27
|
+
o.b
|
28
|
+
o.b
|
29
|
+
o.a
|
30
|
+
expect(o).received(:a, :b).count(2)
|
31
|
+
end
|
32
|
+
|
33
|
+
should ':fail when received multiple messages amount are wrong' do
|
34
|
+
o.a
|
35
|
+
o.b
|
36
|
+
o.b
|
37
|
+
expect(o).received(:a, :b).count(2)
|
38
|
+
end
|
39
|
+
|
40
|
+
should 'pass when each of multiple messages uses its own expectation' do
|
41
|
+
o.a
|
42
|
+
o.b
|
43
|
+
o.b
|
44
|
+
expect(o).received(:a, :b).count(1, 2)
|
45
|
+
end
|
46
|
+
|
47
|
+
should ':fail when at least one messages does not match its expectation' do
|
48
|
+
o.a
|
49
|
+
o.b
|
50
|
+
o.b
|
51
|
+
expect(o).received(:a, :b).count(1, 1)
|
52
|
+
end
|
53
|
+
|
54
|
+
should 'pass when proc validates received multiple messages amount' do
|
55
|
+
o.a
|
56
|
+
o.b
|
57
|
+
o.b
|
58
|
+
o.a
|
59
|
+
expect(o).received(:a, :b).count {|*r| r == [2, 2]}
|
60
|
+
end
|
61
|
+
|
62
|
+
should ':fail when proc does not validate received multiple messages amount' do
|
63
|
+
o.a
|
64
|
+
o.b
|
65
|
+
expect(o).received(:a, :b).count {|*r| false}
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
class MinispecTest::Spies::Unit
|
2
|
+
|
3
|
+
should 'pass when expected arguments matches given ones' do
|
4
|
+
o.a(1, 2)
|
5
|
+
expect(o).received(:a).with(1, 2)
|
6
|
+
end
|
7
|
+
|
8
|
+
should ':fail when wrong arguments given' do
|
9
|
+
o.a(1, 2)
|
10
|
+
expect(o).received(:a).with(4, 5)
|
11
|
+
end
|
12
|
+
|
13
|
+
should 'pass when proc validates arguments' do
|
14
|
+
o.a(1)
|
15
|
+
expect(o).received(:a).with {|a| a[0] == [1]}
|
16
|
+
end
|
17
|
+
|
18
|
+
should ':fail when proc does not validate arguments' do
|
19
|
+
o.a(1)
|
20
|
+
expect(o).received(:a).with {|a| false}
|
21
|
+
end
|
22
|
+
|
23
|
+
should 'pass when given multiple arguments matching expected ones' do
|
24
|
+
o.a 1
|
25
|
+
o.b 2
|
26
|
+
o.c 3
|
27
|
+
expect(o).received(:a, :b, :c).with(1, 2, 3)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'plays well with Array arguments' do
|
31
|
+
o.a [1]
|
32
|
+
o.b [4, 5, [6]]
|
33
|
+
o.c :c
|
34
|
+
expect(o).received(:a, :b, :c).with([1], [4, 5, [6]], :c)
|
35
|
+
end
|
36
|
+
|
37
|
+
should 'pass when proc validates passed arguments' do
|
38
|
+
o.a 1
|
39
|
+
o.b [2]
|
40
|
+
o.c 3
|
41
|
+
expect(o).received(:a, :b, :c).with {|a,b,c| a[0] == [1] && b[0] == [[2]] && c[0] == [3]}
|
42
|
+
end
|
43
|
+
|
44
|
+
should ':fail when at least one argument does not meet expectations' do
|
45
|
+
o.a 1
|
46
|
+
o.b 2
|
47
|
+
o.c 3
|
48
|
+
expect(o).received(:a, :b, :c).with(1, 2, 5)
|
49
|
+
end
|
50
|
+
|
51
|
+
should ':fail when proc does not validate passed arguments' do
|
52
|
+
o.a 1
|
53
|
+
o.b 2
|
54
|
+
o.c 3
|
55
|
+
expect(o).received(:a, :b, :c).with {|a| false}
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
class MinispecTest::Spies::Unit
|
2
|
+
|
3
|
+
should 'pass if message received' do
|
4
|
+
o.a
|
5
|
+
expect(o).received(:a)
|
6
|
+
end
|
7
|
+
|
8
|
+
should ':fail if message not received' do
|
9
|
+
expect(o).received(:a)
|
10
|
+
end
|
11
|
+
|
12
|
+
should 'pass when no message expected and none received' do
|
13
|
+
assert(o).not.received(:a)
|
14
|
+
end
|
15
|
+
|
16
|
+
should ':fail when message sent but not expected' do
|
17
|
+
o.a
|
18
|
+
assert(o).not.received(:a)
|
19
|
+
end
|
20
|
+
|
21
|
+
should 'pass when no messages expected and none received' do
|
22
|
+
assert(o).not.received(:a, :b)
|
23
|
+
end
|
24
|
+
|
25
|
+
should ':fail when at least one message sent but none expected' do
|
26
|
+
o.a
|
27
|
+
assert(o).not.received(:a, :b)
|
28
|
+
end
|
29
|
+
|
30
|
+
should ':fail when all messages sent but none expected' do
|
31
|
+
o.a
|
32
|
+
o.b
|
33
|
+
assert(o).not.received(:a, :b)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'spies on multiple messages' do
|
37
|
+
o = Class.new do
|
38
|
+
def a; __method__; end
|
39
|
+
def b; __method__; end
|
40
|
+
def c; __method__; end
|
41
|
+
end.new
|
42
|
+
spy(o, :a, :b, :c)
|
43
|
+
o.a
|
44
|
+
o.b
|
45
|
+
o.c
|
46
|
+
assert(o).received(:a, :b, :c).and_returned(:a, :b, :c)
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'spies on multiple messages and :fail when at least one message not received' do
|
50
|
+
o = Class.new do
|
51
|
+
def a; __method__; end
|
52
|
+
def b; __method__; end
|
53
|
+
def c; __method__; end
|
54
|
+
end.new
|
55
|
+
spy(o, :a, :b, :c)
|
56
|
+
o.a
|
57
|
+
# o.b intentionally commented
|
58
|
+
o.c
|
59
|
+
assert(o).received(:a, :b, :c)
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
class MinispecTest::Spies::Unit
|
2
|
+
|
3
|
+
should 'pass when messages received in expected order' do
|
4
|
+
o.a
|
5
|
+
o.b
|
6
|
+
o.c
|
7
|
+
assert(o).received(:a, :b, :c).ordered
|
8
|
+
end
|
9
|
+
|
10
|
+
should 'pass when middle messages missing' do
|
11
|
+
o.a
|
12
|
+
# b intentionally not called to make sure it iterates only through expected messages
|
13
|
+
o.c
|
14
|
+
assert(o).received(:a, :c).ordered
|
15
|
+
end
|
16
|
+
|
17
|
+
should ':fail when messages received in wrong order' do
|
18
|
+
o.b
|
19
|
+
o.c
|
20
|
+
o.a
|
21
|
+
assert(o).received(:a, :b).ordered
|
22
|
+
end
|
23
|
+
|
24
|
+
should 'pass when same sequence repeated n times' do
|
25
|
+
o.a
|
26
|
+
o.b
|
27
|
+
o.a
|
28
|
+
o.b
|
29
|
+
assert(o).received(:a, :b).ordered(2)
|
30
|
+
end
|
31
|
+
|
32
|
+
should ':fail when expected sequence not respected' do
|
33
|
+
o.a
|
34
|
+
o.b
|
35
|
+
o.a
|
36
|
+
assert(o).received(:a, :b).ordered(2)
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,158 @@
|
|
1
|
+
class MinispecTest::Spies::Unit
|
2
|
+
|
3
|
+
should 'pass when raise expected and occurred' do
|
4
|
+
o.r rescue nil
|
5
|
+
expect(o).received(:r).and_raise
|
6
|
+
end
|
7
|
+
|
8
|
+
should 'pass when raise not expected and not occurred' do
|
9
|
+
o.a
|
10
|
+
expect(o).received(:a).without_raise
|
11
|
+
end
|
12
|
+
|
13
|
+
should ':fail when raise expected but not occurred' do
|
14
|
+
o.a
|
15
|
+
expect(o).received(:r).and_raise
|
16
|
+
end
|
17
|
+
|
18
|
+
should ':fail when raise occurred but not expected' do
|
19
|
+
o.r rescue nil
|
20
|
+
expect(o).received(:r).without_raise
|
21
|
+
end
|
22
|
+
|
23
|
+
should 'pass when raised an expected error' do
|
24
|
+
o.r rescue nil
|
25
|
+
expect(o).received(:r).and_raise ArgumentError
|
26
|
+
end
|
27
|
+
|
28
|
+
should ':fail when raised an unexpected error' do
|
29
|
+
o.a
|
30
|
+
expect(o).received(:r).and_raise RuntimeError
|
31
|
+
end
|
32
|
+
|
33
|
+
should 'pass when raised an expected message' do
|
34
|
+
o.r rescue nil
|
35
|
+
expect(o).received(:r).and_raise ArgumentError, 'some blah'
|
36
|
+
end
|
37
|
+
|
38
|
+
should 'pass when raised message matches expected one' do
|
39
|
+
o.r rescue nil
|
40
|
+
expect(o).received(:r).and_raise ArgumentError, /blah/
|
41
|
+
end
|
42
|
+
|
43
|
+
should ':fail when raised an unexpected message' do
|
44
|
+
o.r rescue nil
|
45
|
+
expect(o).received(:r).and_raise [ArgumentError, 'another blah']
|
46
|
+
end
|
47
|
+
|
48
|
+
should ':fail when raised message does not match expected one' do
|
49
|
+
o.r rescue nil
|
50
|
+
expect(o).received(:r).and_raise [ArgumentError, /x/]
|
51
|
+
end
|
52
|
+
|
53
|
+
should 'pass when one expectation used for all messages' do
|
54
|
+
o.e rescue nil
|
55
|
+
o.r rescue nil
|
56
|
+
expect(o).received(:e, :r).and_raise ArgumentError
|
57
|
+
end
|
58
|
+
|
59
|
+
should 'pass when one expectation used for all messages and error matching used' do
|
60
|
+
o.e rescue nil
|
61
|
+
o.r rescue nil
|
62
|
+
expect(o).received(:e, :r).and_raise [ArgumentError, 'some blah']
|
63
|
+
end
|
64
|
+
|
65
|
+
should ':fail when one expectation used for all messages and type does not match' do
|
66
|
+
o.e rescue nil
|
67
|
+
o.r rescue nil
|
68
|
+
expect(o).received(:e, :r).and_raise Exception
|
69
|
+
end
|
70
|
+
|
71
|
+
should ':fail when one expectation used for all messages, type matches but message does not' do
|
72
|
+
o.e rescue nil
|
73
|
+
o.r rescue nil
|
74
|
+
expect(o).received(:e, :r).and_raise [ArgumentError, 'some error']
|
75
|
+
end
|
76
|
+
|
77
|
+
should ':fail when one expectation used for all messages
|
78
|
+
and at least one message does not raise at all' do
|
79
|
+
o.a
|
80
|
+
o.r rescue nil
|
81
|
+
expect(o).received(:a, :r).and_raise ArgumentError
|
82
|
+
end
|
83
|
+
|
84
|
+
should 'pass when each message uses own expectation' do
|
85
|
+
o.e rescue nil
|
86
|
+
o.r rescue nil
|
87
|
+
expect(o).received(:e, :r).and_raise ArgumentError, ArgumentError
|
88
|
+
end
|
89
|
+
|
90
|
+
should ':fail when each message uses own expectation
|
91
|
+
and at least message does not raise as expected' do
|
92
|
+
o.e rescue nil
|
93
|
+
o.r rescue nil
|
94
|
+
expect(o).received(:e, :r).and_raise ArgumentError, Exception
|
95
|
+
end
|
96
|
+
|
97
|
+
should ':fail when each message uses own expectation
|
98
|
+
and at least message does not raise at all' do
|
99
|
+
o.a
|
100
|
+
o.r rescue nil
|
101
|
+
expect(o).received(:a, :r).and_raise ArgumentError, Exception
|
102
|
+
end
|
103
|
+
|
104
|
+
should 'pass when each message uses own expectation and error matching used' do
|
105
|
+
o.e rescue nil
|
106
|
+
o.r rescue nil
|
107
|
+
expect(o).received(:e, :r).and_raise [ArgumentError, /blah/], [ArgumentError, /blah/]
|
108
|
+
end
|
109
|
+
|
110
|
+
should ':fail when each message uses own expectation and error matching used
|
111
|
+
and at least one message does not raise as expected' do
|
112
|
+
o.e rescue nil
|
113
|
+
o.r rescue nil
|
114
|
+
expect(o).received(:e, :r).and_raise [ArgumentError, /blah/], [ArgumentError, /doh/]
|
115
|
+
end
|
116
|
+
|
117
|
+
should ':fail when at least one raise occurred but none expected' do
|
118
|
+
o.a
|
119
|
+
o.r rescue nil
|
120
|
+
expect(o).received(:a, :r).without_raise
|
121
|
+
end
|
122
|
+
|
123
|
+
should ':fail when multiple raises expected but none occurred' do
|
124
|
+
o.a
|
125
|
+
o.b
|
126
|
+
expect(o).received(:a, :b).and_raise
|
127
|
+
end
|
128
|
+
|
129
|
+
should 'pass when no raises expected and none expected' do
|
130
|
+
o.a
|
131
|
+
o.b
|
132
|
+
expect(o).received(:a, :b).without_raise
|
133
|
+
end
|
134
|
+
|
135
|
+
should 'pass when given block validates raised exception' do
|
136
|
+
o.r rescue nil
|
137
|
+
expect(o).received(:r).and_raised {|e| e[0].class == ArgumentError}
|
138
|
+
end
|
139
|
+
|
140
|
+
should ':fail when given block does not validate raised exception' do
|
141
|
+
o.r rescue nil
|
142
|
+
expect(o).received(:r).and_raised {false}
|
143
|
+
end
|
144
|
+
|
145
|
+
should 'pass when given block validates raised exceptions' do
|
146
|
+
o.r rescue nil
|
147
|
+
o.e rescue nil
|
148
|
+
expect(o).received(:r, :e).and_raised do |r,e|
|
149
|
+
r[0].class == ArgumentError && e[0].class == ArgumentError
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
should ':fail when given block does not validate raised exceptions' do
|
154
|
+
o.r rescue nil
|
155
|
+
o.e rescue nil
|
156
|
+
expect(o).received(:r, :e).and_raised {false}
|
157
|
+
end
|
158
|
+
end
|