minispec 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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,55 @@
|
|
1
|
+
class MinispecTest::Expectations::Unit
|
2
|
+
|
3
|
+
should 'pass when caller matches given String' do
|
4
|
+
expect(o).to_receive(:a).with_caller([__FILE__, __LINE__ + 1]*':')
|
5
|
+
o.a
|
6
|
+
end
|
7
|
+
should ':fail when caller does NOT matches given String' do
|
8
|
+
expect(o).to_receive(:a).with_caller('blah')
|
9
|
+
o.a
|
10
|
+
end
|
11
|
+
|
12
|
+
should 'pass when caller validated by given Proc' do
|
13
|
+
expect(o).to_receive(:a).with_caller {|callers| callers[0].find {|l| l =~ /#{__FILE__}/}}
|
14
|
+
o.a
|
15
|
+
end
|
16
|
+
should ':fail when caller NOT validated by given Proc' do
|
17
|
+
expect(o).to_receive(:a).with_caller { false }
|
18
|
+
o.a
|
19
|
+
end
|
20
|
+
|
21
|
+
should 'pass when all callers matches given String' do
|
22
|
+
expect(o).to_receive(:a, :b).with_caller(__FILE__)
|
23
|
+
o.a
|
24
|
+
o.b
|
25
|
+
end
|
26
|
+
should ':fail when at least one caller does NOT match given String' do
|
27
|
+
expect(o).to_receive(:a, :b).with_caller('blah')
|
28
|
+
o.a
|
29
|
+
o.b
|
30
|
+
end
|
31
|
+
|
32
|
+
should 'pass when all callers validated by given Proc' do
|
33
|
+
expect(o).to_receive(:a, :b).with_caller do |a,b|
|
34
|
+
a[0].any? {|l| l =~ /#{__FILE__}/} && b[0].any? {|l| l =~ /#{__FILE__}/}
|
35
|
+
end
|
36
|
+
o.a
|
37
|
+
o.b
|
38
|
+
end
|
39
|
+
should ':fail when at least one caller NOT validated by given Proc' do
|
40
|
+
expect(o).to_receive(:a, :b).with_caller { false }
|
41
|
+
o.a
|
42
|
+
o.b
|
43
|
+
end
|
44
|
+
|
45
|
+
should 'pass when each caller matches its String' do
|
46
|
+
expect(o).to_receive(:a, :b).with_caller(__FILE__, [__FILE__, __LINE__ + 2]*':')
|
47
|
+
o.a
|
48
|
+
o.b
|
49
|
+
end
|
50
|
+
should ':fail when at least one caller does NOT match its String' do
|
51
|
+
expect(o).to_receive(:a, :b).with_caller(__FILE__, 'blah')
|
52
|
+
o.a
|
53
|
+
o.b
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
class MinispecTest::Expectations::Unit
|
2
|
+
|
3
|
+
should 'pass if message received' do
|
4
|
+
expect(o).to_receive(:a)
|
5
|
+
o.a
|
6
|
+
end
|
7
|
+
|
8
|
+
should ':fail if message not received' do
|
9
|
+
expect(o).to_receive(:a)
|
10
|
+
end
|
11
|
+
|
12
|
+
should 'pass when no message expected and none received' do
|
13
|
+
expect(o).to_not.receive(:a)
|
14
|
+
end
|
15
|
+
|
16
|
+
should ':fail when message received but not expected' do
|
17
|
+
expect(o).to_not.receive(:a)
|
18
|
+
o.a
|
19
|
+
end
|
20
|
+
|
21
|
+
should 'pass when no messages expected and none received' do
|
22
|
+
expect(o).to_not.receive(:a, :b)
|
23
|
+
end
|
24
|
+
|
25
|
+
should ':fail when at least one message received but not expected' do
|
26
|
+
expect(o).to_not.receive(:a, :b)
|
27
|
+
o.a
|
28
|
+
end
|
29
|
+
|
30
|
+
should ':fail when all messages received but not expected' do
|
31
|
+
expect(o).to_not.receive(:a, :b)
|
32
|
+
o.a
|
33
|
+
o.b
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
class MinispecTest::Expectations::Unit
|
2
|
+
|
3
|
+
should 'pass when messages received in expected order' do
|
4
|
+
expect(o).to_receive(:a, :b, :c).ordered
|
5
|
+
o.a
|
6
|
+
o.b
|
7
|
+
o.c
|
8
|
+
end
|
9
|
+
|
10
|
+
should 'pass when middle messages missing' do
|
11
|
+
expect(o).to_receive(:a, :c).ordered
|
12
|
+
o.a
|
13
|
+
# b intentionally not called to make sure it iterates only through expected messages
|
14
|
+
o.c
|
15
|
+
end
|
16
|
+
|
17
|
+
should ':fail when messages received in wrong order' do
|
18
|
+
expect(o).to_receive(:a, :b).ordered
|
19
|
+
o.b
|
20
|
+
o.c
|
21
|
+
o.a
|
22
|
+
end
|
23
|
+
|
24
|
+
should 'pass when same sequence repeated n times' do
|
25
|
+
expect(o).to_receive(:a, :b).ordered(2)
|
26
|
+
o.a
|
27
|
+
o.b
|
28
|
+
o.a
|
29
|
+
o.b
|
30
|
+
end
|
31
|
+
|
32
|
+
should ':fail when expected sequence not respected' do
|
33
|
+
expect(o).to_receive(:a, :b).ordered(2)
|
34
|
+
o.a
|
35
|
+
o.b
|
36
|
+
o.a
|
37
|
+
end
|
38
|
+
|
39
|
+
should ':fail when used with a single expected message' do
|
40
|
+
expect { expect(o).to_receive(:a).ordered }.raise(ArgumentError, /multiple/i)
|
41
|
+
end
|
42
|
+
|
43
|
+
should ':fail when a non-Integer given' do
|
44
|
+
expect { expect(o).to_receive(:a, :b).ordered('2') }.to_raise(ArgumentError, /integer/i)
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,166 @@
|
|
1
|
+
class MinispecTest::Expectations
|
2
|
+
class Unit
|
3
|
+
|
4
|
+
begin # single expectation
|
5
|
+
should 'pass when raise expected and occurred' do
|
6
|
+
expect(o).to_receive(:r).and_raise
|
7
|
+
o.r rescue nil
|
8
|
+
end
|
9
|
+
|
10
|
+
should 'pass when raise not expected and not occurred' do
|
11
|
+
expect(o).to_receive(:a).without_raise
|
12
|
+
o.a
|
13
|
+
end
|
14
|
+
|
15
|
+
should ':fail when raise expected but not occurred' do
|
16
|
+
expect(o).to_receive(:a).and_raise
|
17
|
+
o.a
|
18
|
+
end
|
19
|
+
|
20
|
+
should ':fail when raise occurred but not expected' do
|
21
|
+
expect(o).to_receive(:r).without_raise
|
22
|
+
o.r rescue nil
|
23
|
+
end
|
24
|
+
|
25
|
+
should 'pass when raised an expected error' do
|
26
|
+
expect(o).to_receive(:r).and_raise(ArgumentError)
|
27
|
+
o.r rescue nil
|
28
|
+
end
|
29
|
+
|
30
|
+
should ':fail when raised an unexpected error' do
|
31
|
+
expect(o).to_receive(:r).and_raise(RuntimeError)
|
32
|
+
o.r rescue nil
|
33
|
+
o.r rescue nil
|
34
|
+
end
|
35
|
+
|
36
|
+
should 'pass when raised an expected message' do
|
37
|
+
expect(o).to_receive(:r).and_raise(ArgumentError, 'some blah')
|
38
|
+
o.r rescue nil
|
39
|
+
end
|
40
|
+
|
41
|
+
should 'pass when raised message matches expected one' do
|
42
|
+
expect(o).to_receive(:r).and_raise(ArgumentError, /blah/)
|
43
|
+
o.r rescue nil
|
44
|
+
end
|
45
|
+
|
46
|
+
should ':fail when raised an unexpected message' do
|
47
|
+
expect(o).to_receive(:r).and_raise(ArgumentError, 'another blah')
|
48
|
+
o.r rescue nil
|
49
|
+
end
|
50
|
+
|
51
|
+
should ':fail when raised message does not match expected one' do
|
52
|
+
expect(o).to_receive(:r).and_raise(ArgumentError, /x/)
|
53
|
+
o.r rescue nil
|
54
|
+
end
|
55
|
+
|
56
|
+
should 'pass when given block validates raised exception' do
|
57
|
+
expect(o).to_receive(:r).and_raise {|r| r.any? {|x| x.class == ArgumentError}}
|
58
|
+
o.r rescue nil
|
59
|
+
end
|
60
|
+
|
61
|
+
should ':fail when given block does not validate raised exception' do
|
62
|
+
expect(o).to_receive(:r).and_raise {false}
|
63
|
+
o.r rescue nil
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
begin # multiple expectations
|
68
|
+
|
69
|
+
should 'pass when one expectation used for all messages' do
|
70
|
+
expect(o).to_receive(:e, :r).and_raise(ArgumentError)
|
71
|
+
o.e rescue nil
|
72
|
+
o.r rescue nil
|
73
|
+
end
|
74
|
+
should 'pass when one expectation used for all messages and error matching used' do
|
75
|
+
expect(o).to_receive(:e, :r).and_raise([ArgumentError, 'some blah'])
|
76
|
+
o.e rescue nil
|
77
|
+
o.r rescue nil
|
78
|
+
end
|
79
|
+
|
80
|
+
should ':fail when one expectation used for all messages and type does not match' do
|
81
|
+
expect(o).to_receive(:e, :r).and_raise(Exception)
|
82
|
+
o.e rescue nil
|
83
|
+
o.r rescue nil
|
84
|
+
end
|
85
|
+
|
86
|
+
should ':fail when one expectation used for all messages, type matches but message does not' do
|
87
|
+
expect(o).to_receive(:e, :r).and_raise([ArgumentError, 'some error'])
|
88
|
+
o.e rescue nil
|
89
|
+
o.r rescue nil
|
90
|
+
end
|
91
|
+
|
92
|
+
should ':fail when one expectation used for all messages
|
93
|
+
and at least one message does not raise at all' do
|
94
|
+
expect(o).to_receive(:a, :r).and_raise(ArgumentError)
|
95
|
+
o.a
|
96
|
+
o.r rescue nil
|
97
|
+
end
|
98
|
+
|
99
|
+
should 'pass when each message uses own expectation' do
|
100
|
+
expect(o).to_receive(:e, :r).and_raise(ArgumentError, ArgumentError)
|
101
|
+
o.e rescue nil
|
102
|
+
o.r rescue nil
|
103
|
+
end
|
104
|
+
|
105
|
+
should ':fail when each message uses own expectation
|
106
|
+
and at least message does not raise as expected' do
|
107
|
+
expect(o).to_receive(:e, :r).and_raise(ArgumentError, Exception)
|
108
|
+
o.e rescue nil
|
109
|
+
o.r rescue nil
|
110
|
+
end
|
111
|
+
|
112
|
+
should ':fail when each message uses own expectation
|
113
|
+
and at least message does not raise at all' do
|
114
|
+
expect(o).to_receive(:a, :r).and_raise(ArgumentError, Exception)
|
115
|
+
o.a
|
116
|
+
o.r rescue nil
|
117
|
+
end
|
118
|
+
|
119
|
+
should 'pass when each message uses own expectation and error matching used' do
|
120
|
+
expect(o).to_receive(:e, :r).and_raise([ArgumentError, /blah/], [ArgumentError, /blah/])
|
121
|
+
o.e rescue nil
|
122
|
+
o.r rescue nil
|
123
|
+
end
|
124
|
+
|
125
|
+
should ':fail when each message uses own expectation and error matching used
|
126
|
+
and at least one message does not raise as expected' do
|
127
|
+
expect(o).to_receive(:e, :r).and_raise([ArgumentError, /blah/], [ArgumentError, /doh/])
|
128
|
+
o.e rescue nil
|
129
|
+
o.r rescue nil
|
130
|
+
end
|
131
|
+
|
132
|
+
should ':fail when at least one raise occurred but none expected' do
|
133
|
+
expect(o).to_receive(:a, :r).without_raise
|
134
|
+
o.a
|
135
|
+
o.r rescue nil
|
136
|
+
end
|
137
|
+
|
138
|
+
should ':fail when multiple raises expected but none occurred' do
|
139
|
+
expect(o).to_receive(:a, :b).and_raise
|
140
|
+
o.a
|
141
|
+
o.b
|
142
|
+
end
|
143
|
+
|
144
|
+
should 'pass when no raises expected and none occurred' do
|
145
|
+
expect(o).to_receive(:a, :b).without_raise
|
146
|
+
o.a
|
147
|
+
o.b
|
148
|
+
end
|
149
|
+
|
150
|
+
should 'pass when given block validates raised exceptions' do
|
151
|
+
expect(o).to_receive(:r, :e).and_raise do |r,e|
|
152
|
+
r.any? {|x| x.class == ArgumentError} &&
|
153
|
+
e.any? {|x| x.class == ArgumentError}
|
154
|
+
end
|
155
|
+
o.r rescue nil
|
156
|
+
o.e rescue nil
|
157
|
+
end
|
158
|
+
|
159
|
+
should ':fail when given block does not validate raised exceptions' do
|
160
|
+
expect(o).to_receive(:r, :e).and_raise {false}
|
161
|
+
o.r rescue nil
|
162
|
+
o.e rescue nil
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
class MinispecTest::Expectations::Unit
|
2
|
+
|
3
|
+
should 'pass when correct value returned' do
|
4
|
+
expect(o).to_receive(:a).and_return(:a)
|
5
|
+
o.a
|
6
|
+
end
|
7
|
+
|
8
|
+
should ':fail when wrong value returned' do
|
9
|
+
expect(o).to_receive(:a).and_return(:b)
|
10
|
+
o.a
|
11
|
+
end
|
12
|
+
|
13
|
+
should 'pass when proc validates returned value' do
|
14
|
+
expect(o).to_receive(:a).and_return {|r| r[0] == :a}
|
15
|
+
o.a
|
16
|
+
end
|
17
|
+
|
18
|
+
should 'yield multiple returned values when message received multiple times' do
|
19
|
+
expect(o).to_receive(:a).and_return {|r| r[0] == :a && r[1] == :a}
|
20
|
+
o.a
|
21
|
+
o.a
|
22
|
+
end
|
23
|
+
|
24
|
+
should ':fail when proc does not validate returned value' do
|
25
|
+
expect(o).to_receive(:a).and_return {false}
|
26
|
+
o.a
|
27
|
+
end
|
28
|
+
|
29
|
+
should 'pass when returned values matches expected ones' do
|
30
|
+
expect(o).to_receive(:a, :b).and_return(:a, :b)
|
31
|
+
o.a
|
32
|
+
o.b
|
33
|
+
end
|
34
|
+
|
35
|
+
should 'pass when all messages returns same value' do
|
36
|
+
expect(o).to_receive(:a, :z).and_return(:a)
|
37
|
+
o.a
|
38
|
+
o.z
|
39
|
+
end
|
40
|
+
|
41
|
+
should ':fail when a single value expected and a at least one message does not return it' do
|
42
|
+
expect(o).to_receive(:a, :b).and_return(:a)
|
43
|
+
o.a
|
44
|
+
o.b
|
45
|
+
end
|
46
|
+
|
47
|
+
should ':fail when at least one message returns a unexpected value' do
|
48
|
+
expect(o).to_receive(:a, :b).and_return(:a, :x)
|
49
|
+
o.a
|
50
|
+
o.b
|
51
|
+
end
|
52
|
+
|
53
|
+
should 'pass when proc validates returned values' do
|
54
|
+
expect(o).to_receive(:a, :b).and_return {|a,b| a[0] == :a && b[0] == :b}
|
55
|
+
o.a
|
56
|
+
o.b
|
57
|
+
end
|
58
|
+
|
59
|
+
should 'yield multiple returned values when multiple messages received multiple times' do
|
60
|
+
expect(o).to_receive(:a, :b).and_return {|a,b| a[0] == :a && a[1] == :a && b[0] == :b}
|
61
|
+
o.a
|
62
|
+
o.a
|
63
|
+
o.b
|
64
|
+
end
|
65
|
+
|
66
|
+
should ':fail when proc does not validate returned values' do
|
67
|
+
expect(o).to_receive(:a, :b).and_return {false}
|
68
|
+
o.a
|
69
|
+
o.b
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
class MinispecTest::Expectations::Unit
|
2
|
+
|
3
|
+
should 'pass when throw expected and occurred' do
|
4
|
+
expect(o).to_receive(:t).and_throw(:s)
|
5
|
+
o.t rescue nil
|
6
|
+
end
|
7
|
+
|
8
|
+
should ':fail when throw expected but not occurred' do
|
9
|
+
expect(o).to_receive(:a).and_throw(:s)
|
10
|
+
o.a
|
11
|
+
end
|
12
|
+
|
13
|
+
should ':fail when throw occurred but not expected' do
|
14
|
+
expect(o).to_receive(:t).without_throw
|
15
|
+
o.t rescue nil
|
16
|
+
end
|
17
|
+
|
18
|
+
should 'pass when throw not expected and not occurred' do
|
19
|
+
expect(o).to_receive(:a).without_throw
|
20
|
+
o.a
|
21
|
+
end
|
22
|
+
|
23
|
+
should 'pass when an expected symbol thrown' do
|
24
|
+
expect(o).to_receive(:t).and_throw :s
|
25
|
+
o.t rescue nil
|
26
|
+
end
|
27
|
+
|
28
|
+
should ':fail when thrown an unexpected symbol' do
|
29
|
+
expect(o).to_receive(:t).and_throw :x
|
30
|
+
o.t rescue nil
|
31
|
+
end
|
32
|
+
|
33
|
+
should 'pass when given block validates thrown symbol' do
|
34
|
+
expect(o).to_receive(:t).and_throw {|t| t[0] == :s}
|
35
|
+
o.t rescue nil
|
36
|
+
end
|
37
|
+
|
38
|
+
should ':fail when given block does not validate thrown symbol' do
|
39
|
+
expect(o).to_receive(:t).and_throw {false}
|
40
|
+
o.t rescue nil
|
41
|
+
end
|
42
|
+
|
43
|
+
should 'pass when given block validates thrown symbols' do
|
44
|
+
expect(o).to_receive(:t, :w).and_throw {|t,w| t[0] == :s && w[0] == :s}
|
45
|
+
o.t rescue nil
|
46
|
+
o.w rescue nil
|
47
|
+
end
|
48
|
+
|
49
|
+
should ':fail when given block does not validate thrown symbols' do
|
50
|
+
expect(o).to_receive(:t, :w).and_throw {false}
|
51
|
+
o.t rescue nil
|
52
|
+
o.w rescue nil
|
53
|
+
o.w rescue nil
|
54
|
+
end
|
55
|
+
|
56
|
+
should 'pass when all messages uses same expectation' do
|
57
|
+
expect(o).to_receive(:t, :w).and_throw :s
|
58
|
+
o.t rescue nil
|
59
|
+
o.w rescue nil
|
60
|
+
end
|
61
|
+
|
62
|
+
should ':fail when all messages uses same expectation
|
63
|
+
and at least one message throws a wrong symbol' do
|
64
|
+
expect(o).to_receive(:t, :w).and_throw :x
|
65
|
+
o.t rescue nil
|
66
|
+
o.w rescue nil
|
67
|
+
end
|
68
|
+
|
69
|
+
should ':fail when all messages uses same expectation
|
70
|
+
ad at least one message does not throw any symbol' do
|
71
|
+
expect(o).to_receive(:t, :z).and_throw :t
|
72
|
+
o.t rescue nil
|
73
|
+
o.z rescue nil
|
74
|
+
end
|
75
|
+
|
76
|
+
should 'pass when each message uses own expectation' do
|
77
|
+
expect(o).to_receive(:t, :w).and_throw :s, :s
|
78
|
+
o.t rescue nil
|
79
|
+
o.w rescue nil
|
80
|
+
end
|
81
|
+
|
82
|
+
should ':fail when each message uses own expectation
|
83
|
+
and at least one message does not throw as expected' do
|
84
|
+
expect(o).to_receive(:t, :w).and_throw :s, :x
|
85
|
+
o.t rescue nil
|
86
|
+
o.w rescue nil
|
87
|
+
end
|
88
|
+
|
89
|
+
should ':fail when each message uses own expectation
|
90
|
+
and at least one message does not throw at all' do
|
91
|
+
expect(o).to_receive(:t, :z).and_throw :s, :z
|
92
|
+
o.t rescue nil
|
93
|
+
o.z
|
94
|
+
end
|
95
|
+
|
96
|
+
should ':fail when at least one throw occurred but none expected' do
|
97
|
+
expect(o).to_receive(:a, :t).without_throw
|
98
|
+
o.a
|
99
|
+
o.t rescue nil
|
100
|
+
end
|
101
|
+
|
102
|
+
should ':fail when multiple thrown expected but none occurred' do
|
103
|
+
expect(o).to_receive(:a, :b).and_throw :s, :s
|
104
|
+
o.a
|
105
|
+
o.b
|
106
|
+
end
|
107
|
+
|
108
|
+
should 'pass when no thrown expected and none expected' do
|
109
|
+
expect(o).to_receive(:a, :b).without_throw
|
110
|
+
o.a
|
111
|
+
o.b
|
112
|
+
end
|
113
|
+
end
|