私はMichael Hartlのチュートリアルに取り組んでいます。
これらのテストを紹介しましたuser_pages_spec.rb
describe "edit" do
let(:user) { FactoryGirl.create(:user) }
before do
sign_in user
visit edit_user_path(user)
end
describe "page" do
it { should have_content("Update your profile") }
it { should have_title("Edit user") }
it { should have_link('change', href: 'http://gravatar.com/emails') }
end
describe "with invalid information" do
before { click_button "Save changes" }
it { should have_content('error') }
end
end
私のsessions_helper.rb
ファイルは次のとおりです。
module SessionsHelper
def sign_in(user)
remember_token = User.new_remember_token
cookies.permanent[:remember_token] = remember_token
user.update_attribute(:remember_token, User.encrypt(remember_token))
self.current_user= user
end
def current_user=(user)
@current_user=user
end
def current_user
remember_token = User.encrypt(cookies[:remember_token])
@current_user ||= User.find_by(remember_token: remember_token)
end
def signed_in?
!current_user.nil?
end
def sign_out
self.current_user = nil
cookies.delete(:remember_token)
end
end
テストを実行すると、4 つすべてが失敗し、次のようなエラー メッセージが表示されます。
1) User pages edit page
Failure/Error: sign_in user
NoMethodError:
undefined method `sign_in' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_4::Nested_1:0x007fcd57928138>
# ./spec/requests/user_pages_spec.rb:90:in `block (3 levels) in <top (required)>'
ユーザー ページの仕様を取得して、sessions_helper から sign_in 関数を取得するにはどうすればよいですか? users_controller はそれを使用できます。私が間違ってやったのはただのテストファイルです。
SessionsHelper を明示的に含めてみましたが、役に立ちませんでした。