繁体   English   中英

RSpec 3.6和Rails 5.0.1-ArgumentError:参数数量错误(给定0,应为1)

[英]RSpec 3.6 and Rails 5.0.1 - ArgumentError: wrong number of arguments (given 0, expected 1)

我正在尝试使用RSpec编写邮件测试。 但是,它失败了,我不知道为什么。 我的失败通知如下:

Failures:

  1) UserMailer welcome_email sends an email upon new user registration
     Failure/Error:
       def welcome_email(id)
         @user = User.find(id)
         mail(to: @user.email, subject: 'Welcome on board!')
       end

     ArgumentError:
       wrong number of arguments (given 0, expected 1)
     # ./app/mailers/user_mailer.rb:4:in `welcome_email'
     # ./spec/mailers/user_mailer_spec.rb:10:in `block (3 levels) in <top (required)>'

我正在测试的文件中的相关代码如下:

class UserMailer < ApplicationMailer
  default from: 'noreply@example.com'

  def welcome_email(id)
    @user = User.find(id)
    mail(to: @user.email, subject: 'Welcome on board!')
  end
end

这是我的规格:

require "rails_helper"


RSpec.describe UserMailer, :type => :mailer do
  describe "welcome_email" do
    let(:mail) { UserMailer.welcome_email }

    it 'sends an email upon new user registration' do
      expect(mail.subject).to eq('Welcome on board!')
    end   
  end
end

我已经尝试了所有关于此错误的建议,这些错误在其他地方均无济于事。 我究竟做错了什么?

您的方法welcome_email采用一个参数,但此处未传递任何内容

let(:mail) { UserMailer.welcome_email }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM