首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails教程ch10测试10.20失败

Rails教程ch10测试10.20失败
EN

Stack Overflow用户
提问于 2015-02-19 19:15:04
回答 3查看 657关注 0票数 2

我对Rails教程中的测试10.20有问题。使用命令后:

bundle exec rake测试:mailers

我收到了错误:

代码语言:javascript
复制
Run options: --seed 6131

# Running:

F

Finished in 0.559132s, 1.7885 runs/s, 5.3655 assertions/s.

  1) Failure:
UserMailerTest#test_account_activation [/home/adam/workspace/sample_app    /test/mailers/user_mailer_test.rb:11]:
Expected: ["noreply@example.com"]
Actual: nil

1 runs, 3 assertions, 1 failures, 0 errors, 0 skips

我已经彻底检查了我的代码,并没有发现不恰当之处,但我显然做错了。

这是我的user_mailer:

代码语言:javascript
复制
class UserMailer < ActionMailer::Base

  def account_activation(user)
    @user = user
    mail to: user.email, subject: "Account activation"
  end

  def password_reset
    @greeting = "Hi"

    mail to: "to@example.org"
  end
end

user_mailer_test:

代码语言:javascript
复制
require 'test_helper'

class UserMailerTest < ActionMailer::TestCase

  test "account_activation" do
    user = users(:michael)
    user.activation_token = User.new_token
    mail = UserMailer.account_activation(user)
    assert_equal "Account activation", mail.subject
    assert_equal [user.email], mail.to
    assert_equal ["noreply@example.com"], mail.from
    assert_match user.name,               mail.body.encoded
    assert_match user.activation_token,   mail.body.encoded
    assert_match CGI::escape(user.email), mail.body.encoded
  end
end

我已经将这一行添加到config/environments/test.rb中:

代码语言:javascript
复制
config.action_mailer.default_url_options = { host: 'example.com' }

能给我点建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-19 19:23:06

您需要将:from添加到这一行

代码语言:javascript
复制
mail to: user.email, subject: "Account activation"

像这样

代码语言:javascript
复制
mail to: user.email, from: "noreply@example.com", subject: "Account activation"
票数 1
EN

Stack Overflow用户

发布于 2015-02-26 00:07:02

所有对用户邮件程序的引用都应以

代码语言:javascript
复制
class UserMailer < ApplicationMailer

这是由于Rails 4.2中最近发生的变化。当我上周更新教程时,我遗漏了几个参考资料,但现在已经更正了。确保您还包括应用程序邮件程序,如清单10.8所示。实际上,从零开始删除并重新生成邮件程序可能是个好主意,以确保代码符合Rails 4.2所期望的结构。

票数 2
EN

Stack Overflow用户

发布于 2015-02-25 23:40:15

只需从以下内容编辑user_mailer.rb文件:

代码语言:javascript
复制
class UserMailer < ActionMailer::Base

对此:

代码语言:javascript
复制
class UserMailer < ApplicationMailer

原因是default from:地址在default from:文件中,它从ActionMailer::Base中提取

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28614943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档