デバイスを使用するようにサイトをアップグレードしており、テストする次の仕様がありますSitesController
。
describe SitesController do
let(:user) { FactoryGirl.create(:user) }
let(:admin) { FactoryGirl.create(:user, :admin) }
shared_examples "disallow get index" do
get :index
response.should_not be_success
end
context "with user signed in" do
before(:each) { sign_in user }
it "disallowes / with GET" do
get :index
response.should_not be_success
end
it_behaves_like "disallow get index"
end
context "with admin signed in" do
before(:each) { sign_in admin }
it "allowes / with GET" do
get :index
response.should be_success
end
end
end
ユーザーがサインインしていないコンテキストを追加し、共有された例を使用して、サインインしてdisallow get index
いない場合は実行できないことを指定したいと思います。しかし、追加するit_behaves_like "disallow get index"
と、この未定義のメソッド エラーが発生します。
sites_controller_spec.rb:8:in `block (2 levels) in <top (required)>': undefined method `get' for #<Class:0x00000101746718> (NoMethodError)
get :index
では、共有サンプル グループではなく、明示的に呼び出すと、なぜこれが機能するのでしょうか。