我正在为发送多封电子邮件的邮件程序编写一些规范。mailer的控制器是:
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问题是,当我创建一个Post请求时,由于某种原因,它不会发送电子邮件,所以我必须强制它。
有没有办法在我创建post请求时强制发送电子邮件?是不是一定要重复一遍?
提前感谢!
发布于 2013-10-12 13:04:15
我认为如果你在发布到create之前捕获@before_send,它应该可以工作。
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
endhttps://stackoverflow.com/questions/19324062
复制相似问题