ブログ変数にアクセスしたいのですが、{ ... } ブロック内ではアクセスしたくありません
let
通常スコープの変数定義と考えないようにしてください。let
は、同じサンプル グループ内の複数の呼び出しにわたってコード ブロックの結果をキャッシュするための複雑なヘルパー メソッドです。サンプルグループ内let
にのみ存在するものはすべて、ブロックlet
外の「変数」にアクセスできないことを意味します。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