【问题标题】:Devise invitable doesn't create an invitation in test environment设计邀请不会在测试环境中创建邀请
【发布时间】: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


【解决方案1】:

您是否尝试过检查ActionMailer::Base.deliveries 的交货情况?我敢打赌你的电子邮件在那里。

【讨论】:

  • 这也保持在 0。我使用的是 Devise.mailer 的东西,因为 ActionMailer 没有显示任何内容,而且我在堆栈的其他地方看到 Devise 跳过了 ActionMailer。
  • 有趣。在我的测试环境中,ActionMailer::Base.deliveries 肯定会填充我的设计电子邮件......我会仔细看看我的设置。我认为在您的开发环境中电子邮件实际上正在发送? :-)
  • 是的,它正在发送——例如,我可以通过他的工作电子邮件地址向我的同事发送一封邮件,它会显示在他的 Thunderbird 邮箱中——来自开发人员。
  • @nilatti 您是通过Delayed::Job 还是其他后台任务发送电子邮件?如果是这种情况,您可能需要给一些睡眠时间。另外,请参阅这个最近的问题,如果您的电子邮件是通过某些后台任务发送的,它似乎可能是一个类似的问题:stackoverflow.com/questions/36284664/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
  • 2023-03-13
  • 2012-01-03
相关资源
最近更新 更多