我正在尝试测试一些我在Rails应用程序中编写的中间件,当我尝试运行我的测试堆栈时,我想出现以下错误:
Failure/Error: let(:middleware) { AngerFist.new(app "UA-xxxxxxx-x", "http://test.domain") }
ArgumentError:
wrong number of arguments (2 for 0)
这是我的中间件:
class AngerFist
include Rack::Utils
def initialize(app, tracker_id, domain)
@app = app
@gabba = Gabba::Gabba.new(tracker_id, domain)
end
def call(env)
status, headers, response = @app.call(env)
headers = HeaderHash.new(headers)
if headers.key?('Content-Type') && headers['Content-Type'].include?('application/json')
@gabba.page_view(env['PATH_INFO'], env['PATH_INFO'])
end
[status, headers, response]
end
end
这是我的测试:
require 'spec_helper'
require 'rack'
require 'gabba'
require 'angerfist'
describe AngerFist do
let(:app) { proc{[200,{},['Hello, world.']]} }
let(:middleware) { AngerFist.new(app "UA-xxxxxxx-x", "http://test.domain") }
let(:request) { Rack::MockRequest.new(middleware) }
it "tracks a page view for JSON" do
expect_any_instance_of(Gabba::Gabba).to receive(:page_view)
request.get('addresses/address.json')
end
end
我哪里错了?
答案 0 :(得分:2)
AngerFist.new(app, "UA-xxxxxxx-x", "http://test.domain")