【发布时间】:2016-04-12 17:19:15
【问题描述】:
我正在使用 Devise 来管理用户。它在开发模式下工作,但在测试中不工作。在开发中,调用 User.invite!成功发送邀请。在测试中,它静默失败——没有错误,所有与邀请相关的字段只有一个 nil 值,并且邮件计数不会增加。
这是我的测试的样子(使用 FactoryGirl 和 RSpec)
require "rails_helper"
describe "with inviting user" do
let(:user) { create(:user) }
before(:each) do
Devise.mailer.deliveries = []
User.invite!({email: user.email}, user)
end
after(:each) do
Devise.mailer.deliveries.clear
end
it 'should generate invite token' do
expect(user.invitation_token).to_not be_nil
end
it 'should send an email' do
expect(Devise.mailer.deliveries.count).to eq(1)
end
end
两个测试都失败了:
1) with inviting user should generate invite token
Failure/Error: expect(user.invitation_token).to_not be_nil
expected: not nil
got: nil
# ./spec/mailer/mailer_spec.rb:20:in `block (2 levels) in <top (required)>'
2) with inviting user should send an email
Failure/Error: expect(Devise.mailer.deliveries.count).to eq(1)
expected: 1
got: 0
(compared using ==)
# ./spec/mailer/mailer_spec.rb:28:in `block (2 levels) in <top (required)>'
我有点难过。有什么想法吗?
【问题讨论】:
-
仅供参考,我还在 config/environments/test.rb 中设置了 config.action_mailer.perform_deliveries = true
-
我想你也有这个
config.action_mailer.delivery_method = :test? -
是的,这是默认设置的:config.action_mailer.delivery_method = :test
标签: ruby-on-rails rspec devise devise-invitable