Rails 观察者在 运行 Capybara 集成测试时不开火

Rails observers are not firing when running Capybara integration tests

我在我的 Rails 应用程序中使用观察器进行通知、activity 提要等。它们使我的模型和控制器保持清洁,在应用程序端和任何非集成测试(我已经对它们进行了单元测试 extensively/successfully)。但我终其一生都无法让他们在集成测试中工作。我在 spec/support/observers.rb 中有以下内容(作为完整性检查。理想情况下,如果我能让它们正常工作,我只会启用它们进行功能测试):

RSpec.configure do |config|
  config.before do
    ActiveRecord::Base.observers.enable :all
  end
end

无论我做什么,我都无法让我的观察者在我的集成测试期间开火(这正是我真正想要用来确保一切正常的东西)。

有没有人对此有任何见解或知道我为什么会遇到这种情况?我正在使用 Rails 5.0.0beta3,以及最新版本的 rails-observers、rspec-rails 和 capybara(来自 github master 分支)。

这并不是我问题的真正答案,但没有人有时间等待。没有人再关心观察员了,因为他们已从 Rails 4 中删除。几乎没有 google 个与他们和水豚相关的话题。

因此,为了继续前进并获得对我需要的代码的集成测试覆盖率,我正在重构我的代码以使用包含回调的关注点。这消除了对观察者的依赖,而且我实际上能够以这种方式进一步抽象我的代码,因为我的许多观察者都在做几乎相同的事情,而且我有我的观察者在服务对象中调用的核心。

集成测试触发这些没有问题。

RIP 观察者。