0

複数のメールを送信するメーラーの仕様をコーディングしています。メーラーのコントローラーは次のとおりです。

def create
  @message = Message.new(params[:message])

  if @message.valid?
    @message.email.each do |email|
      MessageMailer.new_message(@message, email).deliver
    end
    redirect_to users_index_path, :notice => "Email sent correctly"
  else
    notice = "There was an error"
    render :new
  end
end

そして仕様:

describe "POST 'create' for a diffusion" do
  it "returns http success" do
    @diffusion = Fabricate.build(:diffusion)
    post 'create', message: @diffusion
    response.should be_success

    @before_send = ActionMailer::Base.deliveries.size
    @diffusion.email.each do |email|
      MessageMailer.new_message(@diffusion, email).deliver
    end
    ActionMailer::Base.deliveries.size.should eq @before_send + @diffusion.email.size
  end
end

問題は、投稿リクエストを作成するときです。何らかの理由でメールが送信されないため、強制する必要があります。

投稿リクエストを作成するときに強制的にメールを送信する方法はありますか? 自分自身を繰り返すことは必須ですか?

前もって感謝します!

4

1 に答える 1

0

@before_sendに投稿する前にキャプチャすればうまくいくと思いますcreate

describe "POST 'create' for a diffusion" do
  it "returns http success" do
    @diffusion = Fabricate.build(:diffusion)
    @before_send = ActionMailer::Base.deliveries.size

    post 'create', message: @diffusion
    response.should be_success

    ActionMailer::Base.deliveries.size.should eq @before_send + @diffusion.email.size
  end
end
于 2013-10-12T05:04:14.987 に答える