当在相同的描述块中重复进行相同的调用时,例如
RSpec.describe Grant do
let(:grant) { Grant.make }
describe "#exchange!" do
it "destroys token" do
grant.exchange! # dry me up!
expect(grant).to be_destroyed
end
it "returns a Token" do
expect(grant.exchange!).to be_a(Token) # dry me up!
end
end
end
我想干涸grant.exchange!
我已经找到了如何使用subject
,但我知道明确的主题是臭的。
答案 0 :(得分:1)
您可以使用let!
来定义在每个示例之前执行的memoized帮助程序:
RSpec.describe Grant do
let(:grant) { Grant.make }
describe "#exchange!" do
let!(:result) { grant.exchange! }
it "destroys token" do
expect(grant).to be_destroyed
end
it "returns a Token" do
expect(result).to be_a(Token)
end
end
end
但是,我个人更喜欢在示例中明确地调用该方法,就像在代码中一样。它使得在调用之前和之后处理状态变得更容易。