4. describe User do
describe '#admin?' do
s
subject { user.admin? }
l e
context "when user is administrator" do
p
let(:user) do
FactoryGirl.create :user, admin: true
m
end
a
it "returns true" do
x
expect(subject).to be_true
e
end
end
context "when user is not administrator" do
let(:user) do
FactoryGirl.create :user, admin: false
end
it "returns false" do
expect(subject).to be_false
end
end
end
13年2月3日日曜日
5. describe User do
describe '#admin?' do
s
subject { user.admin? }
l e
context "when user is administrator" do
p
let(:user) do
FactoryGirl.create :user, admin: true
m
end
a
it "returns true" do
x
expect(subject).to be_true
e
end
end
context "when user is not administrator" do
let(:user) do
FactoryGirl.create :user, admin: false
end
it "returns false" do
expect(subject).to be_false
end
end
end
13年2月3日日曜日
6. describe User do
describe '#admin?' do
s
subject { user.admin? }
l e
context "when user is administrator" do
NOTmDRY p
let(:user) do
FactoryGirl.create :user, admin: true
end
a
it "returns true" do
x
expect(subject).to be_true
e
end
end
context "when user is not administrator" do
let(:user) do
FactoryGirl.create :user, admin: false
end
it "returns false" do
expect(subject).to be_false
end
end
end
13年2月3日日曜日
7. Using LET for ★
Defining
★
n t e x t
★
C o
13年2月3日日曜日
8. describe User do
describe '#admin?' do
s
subject { user.admin? }
l e
context "when user is administrator" do
p
let(:user) do
FactoryGirl.create :user, admin: true
m
end
a
it "returns true" do
x
expect(subject).to be_true
e
end
end
context "when user is not administrator" do
let(:user) do
FactoryGirl.create :user, admin: false
end
it "returns false" do
expect(subject).to be_false
end
end
end
13年2月3日日曜日
9. describe User do
describe '#admin?' do
s
subject { user.admin? }
l e
let(:user) { FactoryGirl.create :user, admin: admin }
p
context "when user is administrator" do
m
let(:admin) { true }
a
it "returns true" do
x
expect(subject).to be_true
e
end
end
context "when user is not administrator" do
let(:admin) { false }
it "returns false" do
expect(subject).to be_false
end
end
end
end
13年2月3日日曜日
10. describe User do
describe '#admin?' do
s
subject { user.admin? }
e
context "when user is administrator" do
l
let(:user) { FactoryGirl.create :user, admin: admin }
let(:admin) { true }
p
context "when user is administrator" do
m
let(:admin) { true }
it "returnstrue" do do
true"
a
it "returns
expect(subject).to be_true
x
expect(subject).to be_true
e
end
end
end
end context "when user is not administrator" do
let(:admin) { false }
it "returns false" do
expect(subject).to be_false
end
Write ONLY changing parameters under ‘context’.
end
end
By doing so, the spec is very clear and meaningful.
end
13年2月3日日曜日
11. describe User do
describe '#admin?' do
s
subject { user.admin? }
l e
let(:user) { FactoryGirl.create :user, admin: admin }
HOW TO p
context "when user is administrator" do
m
let(:admin) { true }
a
it "returns true" do
x
expect(subject).to be_true
e
end
end
context "when user is not administrator" do
let(:admin) { false }
it "returns false" do
expect(subject).to be_false
end
end
end
end
13年2月3日日曜日
12. describe User do
describe '#admin?' do
s
subject { user.admin? }
l e
let(:user) let(:user) { FactoryGirl.create :user, admin: }admin }
{ FactoryGirl.create :user, admin: admin
p
context "when user is administrator" do
m
let(:admin) { true }
a
it "returns true" do
x
expect(subject).to be_true
e
end
end
context "when user is not administrator" do
let(:admin) { false }
it "returns false" do
★ Prepare resources using ‘let’, ‘let!’
expect(subject).to be_false
end
end
end
and ‘before’ under describe.
end
13年2月3日日曜日
13. describe User do
describe '#admin?' do
s
subject { user.admin? }
l e
let(:user) let(:user) { FactoryGirl.create :user, admin: }admin }
{ FactoryGirl.create :user, admin: admin
p
context "when user is administrator" do
m
let(:admin) { true }
a
it "returns true" do
x
expect(subject).to be_true
e
end
end
context "when user is not administrator" do
let(:admin) { false }
it "returns false" do
expect(subject).to be_false
★ Parameters changes in context is defined by ‘let’
end
end
end
under context, and use ONLY let at there.
end
13年2月3日日曜日
14. describe User do
describe '#admin?' do
s
subject { user.admin? }
l e
let(:user) { FactoryGirl.create :user, admin: admin }
context "when user is administrator" do
p
let(:admin) "when user is}administrator" do
context { true }
m
let(:admin) { true
a
it "returns true" do
x
expect(subject).to be_true
e
end
end
context "when user is not administrator" do
let(:admin) { false is not administrator" do
context "when user }
let(:admin) { false }
it "returns false" do
expect(subject).to be_false
★ Parameters changes in ‘context’ is defined by
end
end
end
‘let’ under context, and use ONLY ‘let’ at there.
end
13年2月3日日曜日
15. describe User do
describe '#admin?' do
s
subject { user.admin? }
l e
let(:user) { FactoryGirl.create :user, admin: admin }
p
MECHANISM
context "when user is administrator" do
m
let(:admin) { true }
a
it "returns true" do
x
expect(subject).to be_true
e
end
end
context "when user is not administrator" do
let(:admin) { false }
it "returns false" do
expect(subject).to be_false
end
end
end
end
13年2月3日日曜日
16. MEC
Lazy ISM
HAN
Evaluation
http://www.fanpop.com/clubs/ho-kago-tea-time/images/29622703/title/dont-lazy-wallpaper
13年2月3日日曜日
17. describe User do
describe '#admin?' do
s
subject { user.admin? }
l e
let(:user) { FactoryGirl.create :user, admin: admin }
p
context "when user is administrator" do
m
let(:admin) { true }
a
it "returns true" do
x
expect(subject).to be_true
e
end
end
context "when user is not administrator" do
let(:admin) { false }
it "returns false" do
expect(subject).to be_false
end
end
end
end
13年2月3日日曜日
18. subject { user.admin? }
s
let(:user) do
l e
FactoryGirl.create :user, admin: admin
p
end
m
context "when user is administrator" do
a
let(:admin) { true }
e x
it "returns true" do
expect(subject).to be_true
end
end
13年2月3日日曜日
19. subject { user.admin? }
s
let(:user) do
l e
FactoryGirl.create :user, admin: admin
p
end
m
context "when user is administrator" do
a
let(:admin) { true }
e x
it "returns true" do
expect(subject).to be_true
end
end
★ At first, RSpec evaluates this line.
13年2月3日日曜日
20. subject { user.admin? }
s
let(:user) do
l e
FactoryGirl.create :user, admin: admin
p
end
m
context "when user is administrator" do
a
let(:admin) { true }
e x
it "returns true" do
expect(subject).to be_true
end
end
★ Then ‘subject’ is evaluated.
13年2月3日日曜日
21. subject { user.admin? }
s
let(:user) do
l e
FactoryGirl.create :user, admin: admin
p
end
m
context "when user is administrator" do
a
let(:admin) { true }
e x
it "returns true" do
expect(subject).to be_true
end
end
★ And ‘user’ defined by ‘let’
is evaluated.
13年2月3日日曜日
22. subject { user.admin? }
s
let(:user) do
l e
FactoryGirl.create :user, admin: admin
p
end
m
context "when user is administrator" do
a
let(:admin) { true }
e x
it "returns true" do
expect(subject).to be_true
end
end
★ And ‘admin’ defined by ‘let’
is evaluated.
13年2月3日日曜日
23. subject { user.admin? }
s
let(:user) do
l e
FactoryGirl.create :user, admin: admin
p
end
FactoryGirl.create(:user, admin: true).admin?
m
context "when user is administrator" do
a
let(:admin) { true }
e x
it "returns true" do
expect(subject).to be_true
end
end
★ Finally, ‘subject’ is evaluated to
this.
13年2月3日日曜日
24. describe User do
describe '#admin?' do
s
subject { user.admin? }
l e
let(:user) { FactoryGirl.create :user, admin: admin }
p
context "when user is administrator" do
m
let(:admin) { true }
a
it "returns true" do
x
expect(subject).to be_true
e
end
end
context "when user is not administrator" do
let(:admin) { false }
it "returns false" do
expect(subject).to be_false
end
end
end
end
13年2月3日日曜日
31. IT’S TIME TO
IN G
T O R
FA C
R E and it’s a very very fun time :p
13年2月3日日曜日
32. blogged at
http://blog.tanaka51.jp/blog/2012/12/14/rspec-best-practice/
referenced by
https://speakerdeck.com/holman
http://kotas.hatenablog.jp/entry/2012/11/22/000046
13年2月3日日曜日