簡體   English   中英

使用Sinatra和rspec對控制器方法進行存根

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM