1
A
回答
2
我相信你的意思測試是否正在改變ENV ...
中間件雲一樣的東西:
class Foo
def initialize(app)
@app = app
end
def call(env)
# do stuff with env ...
status, headers, response = @app.call(env)
# do stuff with status, headers and response
[status, headers, response]
end
end
你可以用一個假的應用程序(或拉姆達初始化,對於物質),這樣做一些測試後返回虛擬迴應:
class FooTester
attr_accessor :env
def call(env)
# check that env == @env and whatever else you need here
[200, {}, '']
end
end
2
@丹尼斯的回答會的工作,但我個人更喜歡另一種,是把中間件一個裸機應用程序(無論是Sinatra還是其他),只是通過請求作爲響應並測試它。這是大多數Rack中間件的設計方式。那並且單元測試了中間件的內部。
例如,它就是我done here with a fork of 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
+0
那麼如何將中間件包含在裸機架應用程序和使用它的應用程序中? –
+1
@BSeven使用匿名Sinatra類。我在答案中給出了一個例子。 – iain
相關問題
- 1. 我該如何測試Rack中間件?
- 2. Express中的中間件測試請求\響應
- 3. Python請求測量響應時間
- 4. 如何測試請求規格的API響應的鍵和值
- 5. 我單位如何測試在Node.js的請求響應週期?
- 6. 如何測量Python請求的服務器響應時間POST請求?
- 7. 如何測量服務器的請求和響應時間?
- 8. 如何測試WCF Soap響應請求/回覆
- 9. 如何測試異步HTTP請求和響應Android
- 10. Http請求響應調試
- 11. 如何減少響應爲JSON的請求響應時間?
- 12. weblogic響應請求時間
- 13. 如何使中間件響應所有ajax請求
- 14. http網頁請求和響應在c#中的單元測試
- 15. 使用RACK中間件獲取客戶端的請求類型
- 16. 瓶測試 - 功能測試錯誤 - 響應流[400不良請求]
- 17. Rails/Rack:從canonical_host中間件中檢索請求params
- 18. 如何不SOAP請求和響應
- 19. 如何在CakePHP集成測試中獲取對請求的響應?
- 20. 如何測試API請求和響應與C#中的swagger定義匹配
- 21. 如何測量服務器端HTTP請求和HTTP響應之間的時間?
- 22. OKHTTP:如何測量請求和響應中的總字節數?
- 23. 如何檢測請求和響應cookie是否不同?
- 24. 如何在另一個測試的請求中使用JMeter中的測試響應?
- 25. 在Android中僞裝HTTP請求響應以進行測試
- 26. 使用Rack中間件在每個請求上添加api_key
- 27. 測試響應時間
- 28. 如何跟蹤碼頭中的HTTP請求和響應時間
- 29. 使用Rspec和Rack :: Test測試REST-API響應
- 30. Timepicker不響應ajax請求?
是的,我正在改變env。你能解釋FooTester的工作原理嗎?它如何稱爲Foo? –
@BSeven:'tester = FooTester.new; tester.env = env; foo = Foo.new(測試人員); foo.call(env);' –