Итак, во-первых, я использую встроенный набор интеграционных тестов, который поставляется с Rails, а не Cucumber, Webrat и т. д. Я хочу освоить встроенный набор, прежде чем переключаться на другой набор тестов.
используя устройство 1.4.2 и рельсы 3.1.
в любом случае, я пишу интеграционный тест, который имитирует регистрацию пользователя в учетной записи, подтверждение учетной записи, повторный вход в систему и заполнение формы. здесь дела, кажется, идут на юг. насколько я могу судить, у Devise возникли проблемы с действием создания моего контроллера, и из-за этих проблем с devise значение current_user равно нулю. вот фрагмент:
require 'test_helper'
class SignupTest < ActionDispatch::IntegrationTest
test "new signup and application" do
go_to_signup_page
create_new_account :user => {:email => "[email protected]", :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.