Я относительно новичок в программировании, Rails, Ruby, Rspec и т.п., так что спасибо за вашу помощь!
Мои спецификации были очень повторяющимися, поэтому я написал несколько вспомогательных методов. Я не могу понять, как правильно использовать их в моих спецификациях. В частности, у меня есть пользовательский контроллер с create:
def create
@user = User.new(params[:user])
if @user.save
redirect_to user_path(@user)
else
render :action => :new
end
end
Бит в помощнике спецификаций, который создает действительного пользователя:
def valid_user_eilif
@test_image = Rails.root + "spec/fixtures/images/seagull.jpg"
@file = Rack::Test::UploadedFile.new(@test_image, "image/jpeg")
user = User.create!(:username => "eilif", :email => "eilif@email.org",
:image => @file, :bio => "Lots of text that I don't want to write",
:signature_quote => "Yet more text.")
user.save!
user
end
А потом в моей спецификации контроллера пользователя:
before (:each) do
post :create, :user => valid_user_eilif
end
it 'should assign user to @user' do
assigns(:user).should eq(User.last)
end
Когда я запускаю спецификацию, я получаю сообщение об ошибке:
Failure/Error: assigns(:user).should eq(User.last)
expected #<User id: 1, username: "eilif", email: "eilif@email.org", bio: "Lots of text that I don't want to write", signature_quote: "I feel empty.", image_file_name: "seagull.jpg", image_content_type: "image/jpeg", image_file_size: 10475, image_updated_at: "2011-05-10 23:35:55", created_at: "2011-05-10 23:35:56", updated_at: "2011-05-10 23:35:56">
got #<User id: nil, username: nil, email: nil, bio: nil, signature_quote: nil, image_file_name: nil, image_content_type: nil, image_file_size: nil, image_updated_at: nil, created_at: nil, updated_at: nil>
Итак, я предполагаю, что я неправильно отправляю сообщение о создании, поскольку ничего не создано? Как правильно это сделать?