Функциональный мини-тест Rails для действий контроллера при отправке электронной почты

Когда я assert_template после вызова действия, которое также отправляет электронное письмо, я получаю информацию о шаблоне электронной почты вместо той, которая отображается в браузере.

Действие контроллера

def create
    @user = User.new(params)
    if @user.save
      respond_to do |format|
        format.html { redirect_to user_path(@user), :notice => "User Created" }
      end
    end
end

@user.save Метод имеет обратный вызов, который отправляет пользователю подтверждение по электронной почте.

Тест

  test 'should render show template' do
    post :create, user: {:email => 'test@example.com'}
    assert_template :show  # Here I'm getting the email template that is being sent on after save callback
  end

Как я могу утверждать, что просматривающий пользователь правильно перенаправлен на (пользовательское) действие show?

1 ответ

Решение

Измените это на assert_redirected_to

 test 'should render show template' do
    post :create, user: {:email => 'test@example.com'}
    assert_redirected_to(user_path(assigns(:user))
 end
Другие вопросы по тегам