コントローラーの仕様でビューをテストします。メールでも可能ですか?もしそうなら、誰かが私に例を示すことができますか?
現在、統合テストに取り組んでいます。サインアップのテストからいくつかのコードを取得し、それを変換して、パスワードのリセットをテストできるようにしましたが、電子メールの部分でスタックしました。
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
サインアップとパスワードのリセット用のメールを設定しました。サインアップが成功すると、ユーザーは Web サイトへようこそというメールが送信されます。パスワードをリセットすると、パスワードのリセット手順が記載された電子メールがユーザーに送信されます。
パスワード コントローラの一部:
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