繁体   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