[英]How do I use Rack/Test to test Sinatra redirects? The App works, but the test doesn't
[英]How do I test methods in a Sinatra app?
如何訪問應用程序實例,以便可以測試foobar()方法?
class App < Sinatra::Base
get '/' do
return foobar
end
def foobar
"hello world"
end
end
測試什么都沒有關系-它是如何:) => http://www.sinatrarb.com/testing.html
這是一個較晚的答復,但我也在嘗試找到一種靈活的方法來做到這一點。
我在Sinatra的源代碼(1.4.5)發現,創建應用程序的使用實例new!
允許直接測試應用程序的方法。 使用Test :: Unit和Shoulda從測試設置中進行測試。
class AppTest < Test::Unit::TestCase
setup do
@app = App.new! # here is the point.
end
should 'say hello to the world' do
assert_equal "hello world", @app.foobar # or @app.send(:foobar) for private methods.
end
end
有后果。 使用new!
不會產生通常Sinatra::Wrapper
變成了切入點中間件管道和在正常設置的應用程序 。 那么new!
如果測試方法是真正的“助手”不依賴於中間件的功能(如SSL)的方式才有效。
另外, Rspec上的帖子提出了一種替代解決方案。 我在過去使用類似的東西,但它需要更多的工作並不總是最好的選擇。 它具有提供更廣泛的測試代碼覆蓋范圍的優勢。 與new!
應用隔離new!
但是,如果我們要進行“單元”測試,這聽起來不錯。
注意@three的注釋:一個非平凡的應用程序應將API方法(通常在應用程序中)與所有幫助程序等分開。以單獨文件結尾的幫助程序更加簡潔,易於維護和測試。 但我絕對了解情況的應用程序的第一個版本將包括幾個助手,與重構將是必要的認識。 即使再有測試帶來了在軟件本身的一些更多的信心,並在未來重構為好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.