У меня есть контроллер 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>
Любая помощь будет очень признательна. Спасибо.