Итак, во-первых, я использую встроенный комплект интеграционных тестов, который поставляется с Rails, а не огурец, вебрат и т. Д. Я хочу освоить встроенный комплект перед переключением на другой комплект тестов.
используя devise 1.4.2 и rails 3.1.
в любом случае, я пишу интеграционный тест, который имитирует регистрацию пользователя для учетной записи, подтверждение учетной записи, вход в систему и заполнениеформа.это где вещи, кажется, идут на юг.Из того, что я могу сказать, у Devise возникли проблемы с моим контроллером, создайте действие, и из-за этих проблем с devise current_user равен nil.вот фрагмент:
require 'test_helper'
class SignupTest < ActionDispatch::IntegrationTest
test "new signup and application" do
go_to_signup_page
create_new_account :user => {:email => "kjsdfkjksjdf@sdfsdf.com", :user_name => "dfdfdf",
:password => "dfdfdfdfdfdf", :password_confirmation => "dfdfdfdfdfdf"}
confirm_account_creation
go_to_signin_page
log_in
go_to_form
submit_form
end
..... другие тесты ....
def go_to_form
get "/applications/new"
assert_response :success
assert_template "applications/new"
assert_equal 'Please fill out this application', flash[:notice]
end
def submit_form
post "/applications", :application => {.....}
assert_response :redirect
assert_equal 'Application Successful ', flash[:notice]
end
И в моем контроллере у меня есть
before_filter :authenticate_user!
Счто я определяю, "def go_to_form" проходит хорошо.Но когда я пытаюсь POST в «def submit_form», он говорит мне, что мне нужно «Пожалуйста, войдите или зарегистрируйтесь», ваша типичная ошибка при попытке получить доступ к функции, когда вы еще не вошли в систему.Я полагаю, что эта проблема также приводит к тому, что current_user равен нулю.
Если я удалю before_filter, я отправлю сообщение, но current_user по-прежнему NIL.
Я не могу объяснить, что здесь происходит.Все остальные действия проходят с летающими цветами, кроме этого действия CREATE.