2013-03-20 3 views
0

Это один из метода фильтра, который бежал, когда метод редактирования баллотировался контроллер 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?

ответ

1

Ошибка здесь

visit edit_post_path(post) 

Вы не сказали ему, что пост или то, что он относится. он ожидает, что сообщение будет содержать что-то.

Возможно, это связано с тем, что ваш блок let объявлен после первого вызова.

+0

Это законная ошибка с моей стороны. Спасибо, что нашли это. Я удалил этот бит, но я все еще получаю ту же ошибку. –

+0

Хорошо, возможно, это 'def correct_user? (Post) post.user == current_user || текущий_user.admin конец' раздел. Этот метод работает, если вы проверите его в «rails console»? Из внешнего вида сообщения об ошибке не удается найти текущего пользователя, поэтому он переходит на другую сторону от || где он вызывает .admin для объекта, который не существует, следовательно, 'undefined method' admin 'для nil: NilClass' – muttonlamb

+0

Глупый мне! Ошибка теста была для некоторого другого теста в том же файле! Спасибо за помощь по-прежнему –

Смежные вопросы