在Rails Mailer测试中混淆错误

时间:2015-12-02 23:43:42

标签: ruby-on-rails ruby

我正在尝试测试我的用户邮件,我写了user_mailer_test.rb,如下所示:

require 'test_helper'

class UserMailerTest < ActionMailer::TestCase

  test "account_activation" do
    user = users(:test)
    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

当我运行我的测试套件时,它会抛出一个错误:

ERROR["test_account_activation", UserMailerTest, 2015-12-01 16:35:46 +0000]
 test_account_activation#UserMailerTest (1448987746.26s)
SyntaxError:         SyntaxError: (erb):36: syntax error, unexpected end-of-input, expecting keyword_end
        ...ut.force_encoding(__ENCODING__)

我错过了什么end?测试看起来适合我。提前谢谢!

编辑:我刚刚运行了我的整个测试套件,而不仅仅是邮件程序测试,而且他们所有投掷unexpected end-of-input尽管他们都是一小时前跑得很好,我最近没有编辑过。这可能是Cloud9的问题而不是我的代码吗?

2 个答案:

答案 0 :(得分:0)

您的erb文件中需要一个结束标记。

答案 1 :(得分:0)

在看到我的所有测试都失败后,我意识到错误发生在我的用户设备中。我重新添加了<% end %>标记,重置并重新播种,并且我的所有测试都通过了。但是,奇怪的是,测试并不知道问题出在users.yml