[英]Mailer throwing undefined [] for nil in rails rspec
I have recently started seeing the following error message among my rspec output: 我最近开始在我的rspec输出中看到以下错误消息:
undefined method [] for nil:NilClass
Note this does not make the test fail, it just puts this error message to the buffer. 请注意,这不会使测试失败,它只会将此错误消息放入缓冲区。 I've managed to track down that it is happening due to the mailer. 我设法跟踪了由于邮件程序而发生的情况。 However, I can't seem to find anywhere it might be produced, or any way to see a backtrace. 但是,我似乎找不到任何可能产生的东西,也没有找到回溯痕迹的任何方法。
Excuse the large paste, but I wanted to make sure to include all the relevant code: 不好意思,但是我想确保包括所有相关代码:
## app/models/invite.rb
class Invite < ActiveRecord::Base
include Token
belongs_to :account
after_create :send_email
def send_email
InviteMailer.invite(self).deliver
end
end
## app/mailers/invite_mailer.rb
class InviteMailer < ActionMailer::Base
def invite(invite)
@invite = invite
@account = invite.account
mail to: invite.email, subject: "You're invited to help manage #{@account.name}"
end
end
## spec/models/invite_spec.rb
require 'spec_helper'
describe Invite do
let(:account){create(:account)}
it 'mails the user' do
account.invites.create(email: 'my@email.com')
end
end
## config/environments/test.rb
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.delivery_method = :test
## Test Results
› be rspec spec/models/invite_spec.rb
undefined method `[]' for nil:NilClass
undefined method `[]' for nil:NilClass
.
Finished in 0.79803 seconds
1 example, 0 failures
Randomized with seed 46468
Thanks for any help, this one has been driving me crazy. 感谢您的帮助,这让我发疯了。
A suggestion would be to change the let
in your invite_spec.rb
建议是在您的invite_spec.rb
更改let
let!(:account){create(:account)}
let bang creates it instantly rather than lazily. 让bang立刻创建它,而不是懒惰地创建它。 Anytime I get a nil:NillClass error
I check the let. nil:NillClass error
我收到nil:NillClass error
我都会检查let。 Its easy to overlook. 它很容易被忽视。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.