Это один из метода фильтра, который бежал, когда метод редактирования баллотировался контроллер UsersRSpec + изобрести: current_user отсутствует методы атрибутов при RSpec побежал
def correct_user?(post)
post.user == current_user || current_user.admin
end
Это испытание я бег
describe PostsController do
subject { page }
let(:first_user_is_admin) { FactoryGirl.create(:user) }
describe "Admin user see edit view of someone else's post:" do
before do
sign_in first_user_is_admin
visit edit_post_path(post)
end
describe "Post is not anonymous with user_id" do
let(:post) { FactoryGirl.create(:post, :user => first_user_is_admin) }
before do
visit edit_post_path(post)
end
it { current_path.should == edit_post_path(post) }
end
end
end
При выполнении этого теста, он терпит неудачу, потому что
Failure/Error: visit edit_post_path(post)
NoMethodError:
undefined method `admin' for nil:NilClass
Я нахожу это странным, потому что post.user == current_user
часть кода в порядке. Так что current_user, вероятно, не ноль или что-то в этом роде.
У кого-нибудь есть идеи, почему я получаю эту неопределенную ошибку метода только во время теста rspec?
Это законная ошибка с моей стороны. Спасибо, что нашли это. Я удалил этот бит, но я все еще получаю ту же ошибку. –
Хорошо, возможно, это 'def correct_user? (Post) post.user == current_user || текущий_user.admin конец' раздел. Этот метод работает, если вы проверите его в «rails console»? Из внешнего вида сообщения об ошибке не удается найти текущего пользователя, поэтому он переходит на другую сторону от || где он вызывает .admin для объекта, который не существует, следовательно, 'undefined method' admin 'для nil: NilClass' – muttonlamb
Глупый мне! Ошибка теста была для некоторого другого теста в том же файле! Спасибо за помощь по-прежнему –