#ruby-on-rails #testing #integration-testing
#ruby-on-rails #тестирование #интеграция-тестирование
Вопрос:
Я пытаюсь запустить некоторые тесты на контроллере моих клиентов. Когда я вручную тестирую контроллер, все работает нормально, однако, когда я выполняю на нем письменные интеграционные тесты, я получаю сообщение об ошибке. Вот мой тестовый код:
context "non-empty Customer model" do
setup do
@customer = Customer.first || Customer.create(:name => "John", :address => "123 Street Cool", :telephone => "01484349361", :email => "johnsmith@world.com")
end
should "be able to create" do
get "/customers/new"
assert_response :success
post "/customers/create", :post => @customer
# assert_response :success
assert_redirected_to "/customers/list"
end
И ошибка, которую я получаю, находится в строке assert_redirected_to и в ней говорится:
Ожидаемый блок, возвращающий значение true.
Вот мой код контроллера для новых / создаваемых действий:
def new
@customer = Customer.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @customer }
end
end
def create
# Instantiate a new object using form params
@customer = Customer.new(params[:customer])
# Save the object
if @customer.save
# If save succeeds, redirect to the list action
flash[:notice] = "Customer created."
redirect_to(:action => 'list')
else
# If save fails, redisplay the form so user can fix problems
render('new')
end
end
Как я могу заставить тесты работать?
Ответ №1:
Похоже, вы отправляете неправильную информацию в качестве параметров.
should "be able to create" do
get "/customers/new"
assert_response :success
post "/customers/create", :customer => @customer.attributes
assert_redirected_to "/customers/list"
end