我想访问 blog 变量,但我不想在它 { ... } 块内进行
尽量不要将其let
视为正常范围的变量定义。let
是一种复杂的辅助方法,用于在同一示例组内的多个调用中缓存代码块的结果。您let
将只存在于示例组中的任何内容,这意味着您无法访问外部块的let
ted“变量” 。it
require 'spec'
describe "foo" do
let(:bar) { 1 }
bar
end
# => undefined local variable or method `bar'
也就是说,如果您只想create(:blog)
跨多个示例重用结果,您可以这样做:
describe "foo" do
let(:blog) { create(:blog) }
it "does something in one context" do
post "/blogs/#{blog.id}/posts"
# specification
end
it "does something else in another context" do
post "/blogs/#{blog.id}/comments"
# specification
end
end