[英]Stubbing a controller method with Sinatra and rspec
所以我試圖想出一種方法來為一個Sinatra應用程序在rspec中存儲一個控制器方法。 其主要原因是測試應用程序的邏輯流程,並確保在滿足某些條件時調用必要的函數。 所以,從本質上講,我希望能夠做類似的事情
controller.should_receive(:fancy_method).and_return("This is a string")
我遇到的困難是訪問sinatra應用程序中的控制器實例。 我能夠使用sinatra控制器類上的class_eval覆蓋當前函數,但我想斷言這些函數實際運行。
有人有什么建議嗎?
謝謝。
丹,我相信你真正想要的只是測試控制器動作。 從測試的角度來看,你不應該真正關心它實際上是所謂的,而是為輸出,給出了具體的輸入, 也許一些其他特殊情況(即嘲諷或磕碰其他類)(1)。
您可以從devver.net 查看Sinatra + Rack :: Test或此博客文章的官方文檔 。
(1):如果您的控制器頁面正在調用其他類(模型,服務等),您可以模擬這些並對它們加以預期。 例如 :
SomeClass.should_receive(:msg).with(:arg).and_return(:special_value)
有關模擬的更多信息(在此例程中使用RSpec)可以在RSpec文檔頁面上找到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.