ラック ミドルウェアの応答をテストする方法はわかりますが、要求をテストする方法は?
つまり、ミドルウェアがアプリへのリクエストをいつ変更するかをテストする方法は?
RSpec と Sinatra で作業しています。
ラック ミドルウェアの応答をテストする方法はわかりますが、要求をテストする方法は?
つまり、ミドルウェアがアプリへのリクエストをいつ変更するかをテストする方法は?
RSpec と Sinatra で作業しています。
@Denisの答えは機能しますが、個人的には、ミドルウェアをベアラックアプリ(シナトラなど)に入れて、リクエストをレスポンスとして渡し、それをテストするという代替手段を好みます。これは、ほとんどの Rack ミドルウェアの仕様です。それと、ミドルウェアの内部の単体テストです。
たとえば、Rack Clicky のフォークを使用してここで行ったことです。
編集:メインアプリとは別にミドルウェアをテストします。
require 'lib/rack/mymiddelware.rb'
require 'sinatra/base'
describe "My Middleware" do
let(:app) {
Sinatra.new do
use MyMiddleware
get('/') { request.env.inspect }
end
}
let(:expected) { "Something you expect" }
before do
get "/"
end
subject { last_response.body }
it { should == expected }
end