gpt4 book ai didi

ruby-on-rails - 为什么电子邮件没有进入 ActionMailer::Base.deliveries 表?

转载 作者:行者123 更新时间:2023-12-04 05:59:10 25 4
gpt4 key购买 nike

目前在我的开发环境中,在使用 ActionMailer::Base.deliveries 后,我在 mail 表中看不到任何内容。是否有我缺少的设置?

配置/环境/development.rb: config.action_mailer.delivery_method = :test

应用程序/邮件程序/notifier.rb

def send_email(user)
mail(:to => user.email, :subject => "Welcome to our website!")
end

这些是我正在运行的测试:
When /^I signup$/ do
visit signup_path
@user = FactoryGirl.build(:user)
fill_in "user_email", :with => @user.email
fill_in "user_password", :with => @user.password
click_button "Join now"
end

Then /^I should receive a confirmation email$/ do
email = ActionMailer::Base.deliveries.last
email.subject.should == "Welcome to our website!"
end

现在我收到 I should receive a confirmation email 步骤的以下错误: undefined method subject for nil:NilClass (NoMethodError)
谢谢!

最佳答案

您收到的错误表明电子邮件为零。换句话说,deliveries.last 方法返回 nil,因为其中没有电子邮件。

可能有很多原因......我假设您使用 cucumber 作为测试机制?

1. 验证 'click_button' 提交

您可以尝试放置 puts 或 log 语句。确保当您运行 cucumber 功能时,它确实会打印。有时这些东西不起作用,因为前端逻辑不起作用并且测试正确失败。换句话说,您期望被触发的 Controller 端点没有被触发。

2. 验证“send_email”是否正确 - 使用单元测试

接下来,验证您是否确实在发送电子邮件。编写一个单元测试来验证这是否有效。这应该快速且容易上手。那里有很多文章。

最后,并不是真正相关,但您可能想要使用 email-spec,它应该提供一些不错的测试方法,因此您不必重新发明轮子。

关于ruby-on-rails - 为什么电子邮件没有进入 ActionMailer::Base.deliveries 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10610150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com