Я знаю, что многие другие пользователи опубликовали свою проблему с тем же заголовком. И я тоже пробовал все их решения. Но, несмотря на все попытки, я не могу добраться до решения.Ожидаемый ответ был <redirect>, но был <200> in Controller test in Rspec
messages_controller_spec:
context 'with valid attributes' do
before :each do
user = FactoryGirl.create :user
sign_in user
end
it 'redirects to the root page' do
xhr :post, :create, messages: attributes_for(:message)
expect(response).to redirect_to root_path
end
end
Теперь Мой MessageController:
def create
@message = current_user.messages.build(message_params)
@recipients = User.all
if @message.save
redirect_to root_path, notice: "Message Sent!" #The test fails here
else
flash[alert] = "Great Scott!"
render :new
end
end
Запуск RSpec из консоли дает следующее сообщение об ошибке:
Failure/Error: expect(response).to redirect_to root_path Expected response to be a <:redirect> but was <200>
Я также проверил журнал/тест .rb. Перенаправление выполнено успешно. Но ответ еще 200 вместо 3xx:
[1m[36m (0.3ms)[0m [1mSAVEPOINT active_record_1[0m
[1m[35mSQL (1.4ms)
[0m INSERT INTO "messages" ("body", "sender_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["body", "MyText"], ["sender_id", 1], ["created_at", "2016-10-06 11:16:14.934487"], ["updated_at", "2016-10-06 11:16:14.934487"]]
[1m[36m (0.3ms)[0m [1mRELEASE SAVEPOINT active_record_1[0m
Redirected to http://test.host/
Completed 200 OK in 40ms (ActiveRecord: 5.9ms) [1m[35m (0.6ms)[0m ROLLBACK
Спасибо человеку! Такая глупая ошибка ... –
Да, это так. Можете ли вы объяснить, в какой ситуации xhr будет работать и почему он здесь не работает? –
@NovneetNov, когда ваш запрос является запросом ajax, в этом случае вы используете 'xhr'. Но здесь ваш запрос не является ajax-запросом. это простой почтовый запрос, и после успеха он перенаправляется на root_path. –