-
-
Notifications
You must be signed in to change notification settings - Fork 359
/
expect_message.feature
94 lines (81 loc) · 2.54 KB
/
expect_message.feature
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
Feature: expect a message
Use should_receive() to set an expectation that a receiver should receive a
message before the example is completed.
Scenario: expect a message
Given a file named "spec/account_spec.rb" with:
"""
require "account"
describe Account do
context "when closed" do
it "logs an account closed message" do
logger = double("logger")
account = Account.new
account.logger = logger
logger.should_receive(:account_closed)
account.close
end
end
end
"""
And a file named "lib/account.rb" with:
"""
class Account
attr_accessor :logger
def close
logger.account_closed
end
end
"""
When I run `rspec spec/account_spec.rb`
Then the output should contain "1 example, 0 failures"
Scenario: expect a message with an argument
Given a file named "spec/account_spec.rb" with:
"""
require "account"
describe Account do
context "when closed" do
it "logs an account closed message" do
logger = double("logger")
account = Account.new
account.logger = logger
logger.should_receive(:account_closed).with(account)
account.close
end
end
end
"""
And a file named "lib/account.rb" with:
"""
class Account
attr_accessor :logger
def close
logger.account_closed(self)
end
end
"""
When I run `rspec spec/account_spec.rb`
Then the output should contain "1 example, 0 failures"
Scenario: provide a return value
Given a file named "message_expectation_spec.rb" with:
"""
describe "a message expectation" do
context "with a return value" do
context "specified in a block" do
it "returns the specified value" do
receiver = double("receiver")
receiver.should_receive(:message) { :return_value }
receiver.message.should eq(:return_value)
end
end
context "specified with and_return" do
it "returns the specified value" do
receiver = double("receiver")
receiver.should_receive(:message).and_return(:return_value)
receiver.message.should eq(:return_value)
end
end
end
end
"""
When I run `rspec message_expectation_spec.rb`
Then the output should contain "2 examples, 0 failures"