отредактировал: последовали за предложениями. См. В конце вопроса.Интеграционный тест: создать против нового в контроллере
У меня есть контроллер с двумя функциями:
def new
if login_required
@discussion = Discussion.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @discussion }
end
end
end
def create
if login_required
@discussion = Discussion.new(params[:discussion])
@discussion.update_attribute("user_id",session[:userid])
respond_to do |format|
if @discussion.save
flash[:notice] = 'Discussion was successfully created.'
format.html { redirect_to(@discussion) }
format.xml { render :xml => @discussion, :status => :created, :location => @Discussion }
else
format.html { render :action => "new" }
format.xml { render :xml => @discussion.errors, :status => :unprocessable_entity }
end
end
end
end
Теперь в моем тестовом файле интеграции у меня есть:
test "test 1" do
post "https://stackoverflow.com/users/login",:user=> { :name => "bob", :password => "test_pass" }
post "/discussions/create", :discussion => { :title => "title 1", :body => "discussion body", :id => "101"} #Create 1
assert_response :success #Assert 1
get "/discussions/101"
assert_response :success #Assert 2
end
Однако я получаю 302
на Assert 1.
Если я изменил «Создать 1» следующим образом: сообщение «/ discussion/new»,: discussion => {: title => "title 1",: body => "body обсуждения",: id => "101"}
Я получаю ошибку 404.
1) Что происходит?
2) какие инструменты/варианты доступны мне, чтобы я сам это понял?
Благодаря
обновление
СЛЕДОВАЛИ предложение (от Ryan Bigg):
- сообщение: создание, {: обсуждение => {}}, {: user_id => пользователей (: боб) .id}
Результат:
- Rack :: Lint :: LintError: окр переменная HTTP_USER_ID имеет отличные строковое значение 1976283457
Все еще нерешенной.
спасибо, я попробовал свои предложения, теперь я получаю: Rack :: Lint :: LintError: окр переменная HTTP_USER_ID имеет значение нестроковой 1976283457 – cbrulak
+1 за указание before_filter –