加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 用Sinatra和rspec绑定一个控制器方法

发布时间:2020-12-16 19:04:33 所属栏目:百科 来源:网络整理
导读:所以我试图想出一种方法来为一个Sinatra应用程序在rspec中存储一个控制器方法.其主要原因是测试应用程序的逻辑流程,并确保在满足某些条件时调用必要的函数.所以,从本质上讲,我希望能够做类似的事情 controller.should_receive(:fancy_method).and_return("Th
所以我试图想出一种方法来为一个Sinatra应用程序在rspec中存储一个控制器方法.其主要原因是测试应用程序的逻辑流程,并确保在满足某些条件时调用必要的函数.所以,从本质上讲,我希望能够做类似的事情
controller.should_receive(:fancy_method).and_return("This is a string")

我遇到的困难是访问sinatra应用程序中的控制器实例.我能够使用sinatra控制器类上的class_eval覆盖当前函数,但我想断言这些函数实际运行.

有人有什么建议吗?

谢谢.

解决方法

丹,我相信你真正想要的只是测试控制器动作.从测试人员的角度来看,你不应该真正关心它实际调用的内容,而应该关注输出,给定一个特定的输入和一些其他特殊条件(即模拟或存根其他类)(1).

您可以查看official documentation for Sinatra + Rack::Test或this blog post from devver.net.

(1):如果您的控制器页面正在调用其他类(模型,服务等),您可以模拟它们并对它们加以预期.例如 :

SomeClass.should_receive(:msg).with(:arg).and_return(:special_value)

有关模拟的更多信息(在此例程中使用RSpec)可以在RSpec documentation pages上找到.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读