Как проверить, что письмо было отправлено и доставлено с помощью rspec2 в спецификации контроллера? - PullRequest
2 голосов
/ 31 октября 2011

Я проверяю свои взгляды в спецификациях контроллера. Это возможно и с электронной почтой? Если так, может кто-нибудь показать мне пример?

В настоящее время я работаю над интеграционными тестами: Я взял некоторый код из проверки на регистрацию и преобразовал его, чтобы я мог проверить свой пароль сброса, но застрял в части электронной почты.

describe "Reset Password" do

    describe "success" do

    it "should send the user reset password instructions" do

      lambda do
        visit reset_password_path
        fill_in "password_reset[email]",            :with => "mememe@gmail.com"      
       # click_button "password_reset_submit"
       # response.should render_template :js => "window.location = '#{temp_success_path}'"
     #  end.should change(User, :count)

    end
  end
end
end

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

Часть контроллера паролей:

class PasswordsController < ApplicationController
  def new
  end

  def create
    @user = User.find_by_email(params[:password_reset][:email])
    @user.generate_and_store_password_reset_token && UserMailer.password_reset(@user).deliver if @user
    redirect_to root_url, :notice => "Email sent with password reset instructions."
  end

Контроллер пользователей:

class UsersController < ApplicationController

  def new
    @user = User.new
  end

  def create
    @user = User.new(params[:user])     
    respond_to do |format|
      if @user.save 
        UserMailer.join_confirmation(@user).deliver
        format.js   { render :js => "window.location = '#{temp_success_path}'" }

      else

        format.html { render :new }  
        format.js   { render :form_errors }
      end
    end
  end


end

1 Ответ

2 голосов
/ 31 октября 2011

Вы найдете хорошие объяснения для проверки электронных писем в этом Railscast .

...