gpt4 book ai didi

ruby-on-rails - Rails RSpec 测试 : Undefined method 'deliver' for nil:NilClass

转载 作者:行者123 更新时间:2023-12-04 01:16:57 24 4
gpt4 key购买 nike

我正在尝试使用 RSpec 测试某个方法是否会在我的 Rails 3.2 中触发电子邮件。它适用于生产和开发,但我无法通过我的测试。

我收到错误 undefined method 'deliver' for nil:NilClass

# user_spec.rb
it "should send an email if user has weekly email set to true" do
@user = FactoryGirl.create(:user, user_name: "Jane Doe", email: "jane@gmail.com", weekly_email: true, weekly_article_count: 10)
Mailer.should_receive(:weekly_email)
User.send_weekly_email
end

# user.rb
scope :weekly_email, where(:weekly_email => true)
scope :weekly_article_count, :conditions => ["weekly_article_count IS NOT NULL"]

def self.send_weekly_email
@users = User.weekly_email.weekly_article_count
@users.each do |user|
Mailer.weekly_email(user).deliver
end
end

我也试过使用 Mailer.should_receive(:weekly_email).with(user) ,但随后我收到错误 undefined local variable or method 'user'

最佳答案

有趣的是,我几个小时前才不得不这样做。您还需要对交付方法进行 stub 以防止其崩溃。否则你的 should_receive返回 nil 所以当你的方法调用 deliver 时它在打电话 nil.deliver .

这应该有效:

Mailer.should_receive(:weekly_email).and_return( double("Mailer", :deliver => true) )

关于ruby-on-rails - Rails RSpec 测试 : Undefined method 'deliver' for nil:NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17960348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com