Ричард, проблема, скорее всего, в том, что у вас нет current_user.
Для этого вам нужно смоделировать процесс входа в систему.
Вы можете сделать это с помощью спецификации контроллера, но у меня нет хорошего примера здесь.Я писал спецификации для существующего кода, как и вы, и имело смысл использовать спецификации запросов вместо этого.
У меня также нет такой спецификации для Волшебства (я должен !!), и я здесь использую Capybara для заполненияв формах.Тем не менее, вот как выглядела моя спецификация:
(Здесь: аккаунт такой же, как и у пользователя)
context "when logged in" do
before :each do
@account = Factory.create(:account)
@current_game = Factory(:game_stat)
visit login_path
fill_in 'Username or Email Address', :with => @account.email
fill_in 'Password', :with => @account.password
click_button('Log in')
end
Так что фабрики - это другое дело,Моя выглядела так:
Factory.define :account do |f|
f.sequence(:username) { |n| "ecj#{n}" }
f.sequence(:email) { |n| "ecj#{n}@edjones.com" }
f.password "secret"
f.password_confirmation {|u| u.password }
end
Вам не нужно использовать фабрики, но вам нужно установить этот сеанс и установить current_user.