Ruby on rails RubyonRails教程测试10..20

Ruby on rails RubyonRails教程测试10..20,ruby-on-rails,Ruby On Rails,有人能通过MichaelHarty的测试10.20RubyonRails教程吗? 我有以下我无法理解的错误;除此之外,我严格遵守了教程的指导 例如,教程说要更改为noreply@example.com"] 但它指出了这条线的错误…… 我是否应该更改这一行并通知Michael Harty有关错误/做些其他事情来修复错误 我使用:ruby-2.3.0 rails-4.2.2 错误: 错误[“测试帐户激活”,UserMailerTest,2016-03-23 16:43:45 +0000]test_a

有人能通过MichaelHarty的测试10.20RubyonRails教程吗? 我有以下我无法理解的错误;除此之外,我严格遵守了教程的指导

例如,教程说要更改为noreply@example.com"] 但它指出了这条线的错误…… 我是否应该更改这一行并通知Michael Harty有关错误/做些其他事情来修复错误

我使用:ruby-2.3.0 rails-4.2.2

错误:

错误[“测试帐户激活”,UserMailerTest,2016-03-23 16:43:45 +0000]test_account_activation#UserMailerTest(1458751425.73s)ArgumentError:ArgumentError:参数数目错误(给定 0,应为1) app/mailers/user\u mailer.rb:3:in
account\u activation'
test/mailers/user\u mailer\u test.rb:6:in
block in' app/mailers/user\u mailer.rb:3:in
account\u activation'
test/mailers/user\u mailer\u test.rb:6:in
block in'

失败[“测试密码重置”,用户邮箱测试,2016-03-23 16:43:45 +0000]test_password_reset#UserMailerTest(1458751425.83s) 预期:[”from@example.com"] 实际:[”noreply@example.com"] test/mailers/user\u mailer\u test.rb:16:in'block in'

39/39: [=============================================================] 100% 时间:00:00:03,时间:00:00:03

//user\u mailer.rb
类UserMailer类UserMailerTest
我添加了将Michael更改为Tatyana的文件,但仍然出现如下错误:我找到此文件并将其添加为将Michael更改为Tatyana,但仍然出现如下错误: 错误[“测试帐户激活”,UserMailerTest,2016-03-23 16:43:44+0000] 测试账户激活用户邮箱测试(1458751424.20s) ActionView::Template::Error:ActionView::Template::Error:缺少要链接到的主机!请提供:主机参数,设置默认\u url\u选项[:主机],或将:only\u路径设置为true app/views/user\u mailer/account\u activation.html.erb:9:in
\u app\u views\u user\u mailer\u account\u activation\u html\u erb\u 238003839326460902\u 67365800'
app/mailers/user\u mailer.rb:5:in
account\u activation' test/mailers/user\u mailer\u test.rb:9:in
block in'
app/views/user\u mailer/account\u activation.html.erb:9:in
\u app\u views\u user\u mailer\u account\u activation\u html\u erb\u 238003839326460902\u 67365800' app/mailers/user\u mailer.rb:5:in
account\u activation'

test/mailers/user\u mailer\u test.rb:9:in'

UserMailer.account\u activation方法需要测试中的user参数

class UserMailerTest < ActionMailer::TestCase

  test "account_activation" do
    mail = UserMailer.account_activation(User.create(email: "foo@bar.com"))
    assert_equal "Account activation", mail.subject
    assert_equal ["to@example.org"], mail.to
    assert_equal ["from@example.com"], mail.from
    assert_match "Hi", mail.body.encoded
  end
end

类UserMailerTest
该错误来自
用户邮件测试。rb:6
第6行

class UserMailer
第3行中,您将
user
对象传递给
def account\u activation(user)
,但在您的
UserMailer.account\u activation
中,没有传递任何内容。请遵循该书,它应该是这样的示例

user = users(:michael)
user.activation_token = User.new_token
mail = UserMailer.account_activation(user) # right here user passed.

test/mailers/user\u mailer\u test.rb如下所示,允许从一个错误中删除:

需要“测试助手”


类UserMailerTest 测试“帐户激活”do

结束

结束

还有另一个,如下所示: 错误[“测试帐户激活”,UserMailerTest,2016-03-23 16:43:47+0000] 测试账户激活用户邮箱测试(1458751427.01s) ActionView::Template::Error:ActionView::Template::Error:缺少要链接到的主机!请提供:主机参数,设置默认\u url\u选项[:主机],或将:only\u路径设置为true app/views/user\u mailer/account\u activation.html.erb:9:in
\u app\u views\u user\u mailer\u account\u activation\u html\u erb\u 1635017718511086794\u 82209820'
app/mailers/user\u mailer.rb:5:in
account\u activation' test/mailers/user\u mailer\u test.rb:9:in
block in'
app/views/user\u mailer/account\u activation.html.erb:9:in
\u app\u views\u user\u mailer\u account\u activation\u html\u erb\u 1635017718511086794\u 82209820' app/mailers/user\u mailer.rb:5:in
account\u activation'

test/mailers/user\u mailer\u test.rb:9:在“

中的
块中,已解决此问题。此错误是由于未放置电子邮件选项造成的。
感谢7urkm3n:我有这个文件,但我仍然有一个错误,指出我有主机丢失的模板错误??我不认为我应该更改模板,但为了摆脱错误,我添加了本地主机3000,它仍然指向主机中的语法错误……如何修复它并通过测试10.20谢谢。请提供更多详细信息如果你知道如何实现它,请举个例子。谢谢。我有完全相同的文件,仍然有一个错误。你知道需要更改什么吗?正如你所说,我已经更改了,但仍然有一个错误:错误[“测试帐户激活”,UserMailerTest,2
user = users(:michael)
user.activation_token = User.new_token
mail = UserMailer.account_activation(user) # right here user passed.
user = users(:tatyana)

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