如何在控制器规范中测试是否已使用rspec2发送和交付电子邮件?

时间:2011-10-31 09:16:46

标签: ruby-on-rails rspec ruby-on-rails-3.1 rspec2 rspec-rails

我在控制器规格中测试我的视图。电子邮件也可以吗? 如果是这样,有人能告诉我一个例子吗?

我目前正在进行集成测试: 我已经从测试注册和转换代码中获取了一些代码,因此我可以测试我的重置密码,但卡在电子邮件部分上。

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 个答案:

答案 0 :(得分:2)

您可以在this Railscast中找到测试电子邮件的良好解释。