我有一个Rack中间件,当在Gemfile中指定gem时,它会自动插入到应用程序中:
gem 'headhunter'
然后中间件就这样注册:
module Headhunter
module Rails
class Railtie < ::Rails::Railtie
initializer "headhunter.hijack" do |app|
head_hunter = Runner.new(::Rails.root)
at_exit do
head_hunter.report
head_hunter.clean_up!
end
app.middleware.insert(0, Headhunter::Rack::CapturingMiddleware, head_hunter)
end
end
end
end
现在我想确保中间件实际插入RSpec功能/请求规范中。
我在spec/dummy
中有一个虚拟Rails应用程序,它执行以下操作:
require 'spec_helper'
feature 'Middleware integration' do
scenario "Integrating the middleware into the Rack stack" do
expect(Headhunter::Rack::CapturingMiddleware.any_instance).to receive(:call)
visit posts_path
end
end
可悲的是,这失败了,我不知道为什么。将binding.pry
放在call
内,我可以确定 被调用。
甚至可能有更好的方法来测试它?非常感谢您的帮助。