首页 > 解决方案 > 如何修复 ArgumentError:参数数量错误(给定 0,预期为 1) - RoR

问题描述

我是初学者,在邮件程序代码 Ruby on Rails 中,我的代码和他的测试之间出现错误“ArgumentError:参数数量错误(给定 0,预期为 1)”。

错误:

UtilisateurMailerTest#test_account_activation:

ArgumentError: wrong number of arguments (given 0, expected 1)
    app/mailers/utilisateur_mailer.rb:8:in `account_activation'
    test/mailers/utilisateur_mailer_test.rb:6 

utilisateur_mailer_test.rb:

class UtilisateurMailerTest < ActionMailer::TestCase
  test "account_activation" do
           mail = UtilisateurMailer.account_activation
(line6)    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

utilisateur_mailer.rb: ........

Line8:
  def account_activation(utilisateur)
    @utilisateur = utilisateur
    mail to: utilisateur.email, subject: "Activation du compte"
  end

我试图删除“,mail.subject”和主题:“Activation du compte”,它返回:ArgumentError:错误数量的参数(给定1,预期2..3)

我是新手..谢谢你的回答!

标签: ruby-on-railsruby-on-rails-5

解决方案


您是否可以看到错误消息告诉您您的方法之一正在等待参数但没有传递给它。

在您的utilisateur_mailer_test.rb中,您可以看到您正在调用account_activation您在 中创建的方法utilisateur_mailer.rb

如您所见,此方法需要执行utilisateur参数,但是当您在内部调用此方法时utilisateur_mailer_test.rb,您不会向其传递任何内容: mail = UtilisateurMailer.account_activation

例如,您必须通过使用FactoryBotFaker的工厂创建用户来指定utilisateur参数。

祝你好运 !:)


推荐阅读