У меня есть контроллер сообщений, и я только что установил Devise, чтобы быстро и легко добавить аутентификацию. Перед установкой Devise я создал несколько тестов для «нового» действия моего контроллера Posts. После установки Devise мои тесты не выполнялись, пока я не добавил
config.include Devise::TestHelpers, :type => :controller
строка в моем файле spec_helper.rb.
У меня тоже есть строка
before_filter :authenticate_user!, :except => [:show, :index]
в моем PostsController.
Теперь, когда я запускаю свои тесты, они все проходят, кроме этих 2:
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, кроме параметра. Мне нужно иметь возможность войти в систему пользователя в rspec с фабричным пользователем. Как зарегистрировать пользователя Factory из теста контроллера Rspec? Как определить фабричного пользователя?
Я пробовал это на своих фабриках.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>
Любая помощь будет принята с благодарностью. Спасибо.