RSpec では、Rails ビュー仕様で次のビュー スタブを変換しようとしています。
view.stub(:current_page?).with(root_url).and_return(true)
新しい allow/expect 構文を使用するには、以下は機能しません。
allow(view).to receive(:current_page?).with(root_url).and_return(true)
ただし、これによりNoMethodErrorが返されます。
NoMethodError:
undefined method `allow' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_2::Nested_1::Nested_2:0x007fc7ca971988>
RDoc は、allow が double または real オブジェクトを受け入れる必要があることを示しています。これはバグですか、それとも何か間違っていますか? どうもありがとう!
仕様のソースコードは次のとおりです。
require "spec_helper"
describe 'Navigation Bar' do
# This needs to be kept synced up with the links in the navigation bar
KNOWN_LINKS = [:deal_gallery, :list, :login, :logout, :edit_account, :signup,
:categories]
shared_examples "Navigation Bar Link Context" do |params|
expected_links = params[:expected_links]
context 'Outside Deal Gallery' do
before(:each) { render partial: "layouts/navigation", formats: [:html] }
it_has_only_links_with_ids
it_has_only_known_links KNOWN_LINKS
it_has_links expected_links
it_does_not_have_links KNOWN_LINKS - expected_links
end
context 'On Deal Gallery' do
before(:each) do
# view.stub(:current_page?).with(root_url).and_return(true)
allow(view).to receive(:current_page?).with(root_url).and_return(true)
render partial: "layouts/navigation", formats: [:html]
end
it_has_only_links_with_ids
it_has_only_known_links KNOWN_LINKS
it_has_link :categories
it_does_not_have_link :deal_gallery
end
end
context 'For Anonymous User' do
it_behaves_like "Navigation Bar Link Context",
expected_links: [:deal_gallery, :login, :signup]
end
context 'For Authenticated User' do
login_user
it_behaves_like "Navigation Bar Link Context",
expected_links: [:deal_gallery, :list, :logout, :edit_account]
end
end