【发布时间】:2017-03-29 17:17:04
【问题描述】:
我想在我的应用程序中测试邮件程序,以确保它正在执行我希望它执行的操作。
class LessonMailer < ApplicationMailer
def send_mail(lesson)
@lesson = lesson
mail(to: lesson.student.email,
subject: 'A lesson has been recorded by your tutor')
end
end
这是我在 spec/mailers 目录中的测试
require "rails_helper"
RSpec.describe LessonMailer, :type => :mailer do
describe "lesson" do
let( :student ){ FactoryGirl.create :user, role: 'student', givenname: 'name', sn: 'sname', email: 'test@sheffield.ac.uk' }
let( :lesson ){ FactoryGirl.create :lesson, student_id: 2 }
let( :mail ){ LessonMailer.send_mail( lesson ).deliver_now
it "renders the headers" do
expect(mail.subject).to eq("A lesson has been recorded")
expect(mail.to).to eq(["to@example.ac.uk"])
expect(mail.from).to eq(["no-reply@example.ac.uk"])
end
it "renders the body" do
expect(mail.body.encoded).to match("A lesson form has been recorded")
end
end
end
我想测试“send_mail”方法是否按我想要的方式工作,但是,我收到了这个错误。我该如何解决这个问题?谢谢。
NoMethodError:
undefined method `email' for nil:NilClass
# ./app/mailers/lesson_mailer.rb:4:in `send_mail'
【问题讨论】:
标签: ruby-on-rails rspec ruby-on-rails-5 factory-bot