आप की तरह मेरा परीक्षण किया
let(:app) { lambda {|env| [200, {'Content-Type' => 'text/plain'}, ['OK']]} }
इसके अलावा, आपके मिडलवेयर के निर्माता अपनी पहली parame के रूप में एक एप्लिकेशन प्राप्त करना चाहिए: सिर्फ दुनिया का सबसे सरल रैक एप्लिकेशन की आवश्यकता है Ter नहीं तो यह पढ़ना चाहिए एक हैश:
subject { MyMiddleWare.new(app) }
सभी संभावना में, हालांकि, अपने परीक्षण निर्धारित करने के लिए क्या प्रभाव मिडलवेयर अनुरोध पर किया गया है की जरूरत जा रहा है। तो आप अपने मिडलवेयर पर जासूसी करने के लिए थोड़ा और परिष्कृत रैक ऐप लिख सकते हैं।
class MockRackApp
attr_reader :request_body
def initialize
@request_headers = {}
end
def call(env)
@env = env
@request_body = env['rack.input'].read
[200, {'Content-Type' => 'text/plain'}, ['OK']]
end
def [](key)
@env[key]
end
end
और फिर आप वास्तव में अनुरोध भेजने के लिए रैक :: MockRequest का उपयोग करना चाहेंगे। कुछ ऐसा:
describe MyMiddleWare do
let(:app) { MockRackApp.new }
subject { described_class.new(app) }
context "when called with a POST request" do
let(:request) { Rack::MockRequest.new(subject) }
before(:each) do
request.post("/some/path", input: post_data, 'CONTENT_TYPE' => 'text/plain')
end
context "with some particular data" do
let(:post_data) { "String or IO post data" }
it "passes the request through unchanged" do
expect(app['CONTENT_TYPE']).to eq('text/plain')
expect(app['CONTENT_LENGTH'].to_i).to eq(post_data.length)
expect(app.request_body).to eq(post_data)
end
end
end
end
यहां विषय पर कोई कॉल नहीं है, यह वास्तव में कैसे काम करता है? – Calin
यह वास्तव में एक वैध रैक ऐप नहीं है। 'लैम्ब्डा' को एक वैध रैक ऐप होने का तर्क लेना होगा। – branch14
विषय पर पोस्ट करने के लिए अपडेट किया गया - धन्यवाद, @ कैलिन। – Ritchie