Rspec, Devise, Factory girl - как зарегистрироваться пользователю Factory через тест контроллера Rspec?

У меня есть контроллер Posts, и я только что установил Devise, чтобы быстро и легко добавить некоторую аутентификацию. До установки Devise я создал несколько тестов для действия 'new' контроллера Posts. После установки Devise мои тесты не выполнялись, пока я не добавил строку

config.include Devise::TestHelpers, :type => :controller

в файл spec_helper.rb.

У меня также есть строка

before_filter :authenticate_user!, :except => [:show, :index]

в моем PostsController.

Теперь, когда я запускаю свои тесты, все они проходят, кроме этих двух:

it "should be successful" do
     get :new
     response.should be_success
  end

  it "should have the right title" do
     get :new
     response.should have_selector('title', :content => @base_title + " | New post")
  end

Я также использую Factory girl. Ошибка вызвана параметром before_filter except. Мне нужно иметь возможность регистрировать пользователя в rspec с помощью фабричного пользователя. Как мне зарегистрировать пользователя Factory из теста контроллера Rspec? Как мне определить пользователя Factory?

Я попробовал это в своем factories.rb:

Factory.define :user do |user|  
  user.name                  "Test User"
  user.email                 "user@example.com"
  user.password              "password"
  user.password_confirmation "password"
end

Но затем я получаю ошибку:

NoMethodError:
   undefined method `password_salt=' for #<User:0x00000103cac958>

Любая помощь будет очень признательна. Спасибо.

8
задан Jack 29 November 2011 в 14:55
поделиться