前提・実現したいこと
Ruby on RailsでActionMailerを用いたメール送信アプリを作っています。
RSpecを使用してMailerの単体テストを実行した際、以下のエラーが発生しました。
プログラミング学習を開始して間も無く、知識不足のためアドバイスいただけると嬉しいです。
発生している問題・エラーメッセージ
1) UserMailer#trebds(user) when trends(user) Failure/Error: it {expect(mail.from.first).to eq('<xxx@gmail.com>')} ArgumentError: wrong number of arguments (given 0, expected 1) # ./spec/mailers/user_mailer_spec.rb:15:in `block (4 levels) in <top (required)>'
該当のソースコード
user_mailer_spec.rb
ruby
1require 'rails_helper' 2 3describe UserMailer, type: :mailer do 4 describe '#trebds(user)' do 5 users = User.all 6 subject(:mail) do 7 users.each do |user| 8 UserMailer.trends(user) 9 described_class.trends(user).deliver_now 10 ActionMailer::Base.deliveries.last 11 end 12 end 13 14 context "when trends(user)" do 15 it {expect(mail.from.first).to eq('<xxx823@gmail.com>')} 16 it {expect(mail.to.first).to eq('yyy@yahoo.co.jp')} 17 it {expect(mail.subject).tp eq("今月の業界動向")} 18 end 19 end 20end
user_mailer.rb
ryby
1class UserMailer < ApplicationMailer 2 def trends(user) 3 @user = user 4 @image = 'sample.jpg' 5 attachments.inline[@image] = File.read('./tmp/sample.jpg') 6 mail to: @user.email, subject: "今月の業界動向" 7 end 8end
試したこと
引数に関するエラーなので、trends(user)の(user)に値を渡してあげればいいと考え,context内でもuser = user.allを定義してみましたが変わりませんでした。。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
ruby 2.6.5
rubyonrails 6.0.0
RSpec 3.9
rspec-core 3.9.2
rspec-expectations 3.9.2
rspec-mocks 3.9.1
rspec-rails 4.0.1
rspec-support 3.9.3
エラー解決のアドバイスいただきたく、何卒よろしくお願いします。
あなたの回答
tips
プレビュー