Dan*_*ade 7 ruby rspec sinatra
所以我试图想出一种方法来为一个Sinatra应用程序在rspec中存储一个控制器方法.其主要原因是测试应用程序的逻辑流程,并确保在满足某些条件时调用必要的函数.所以,从本质上讲,我希望能够做类似的事情
controller.should_receive(:fancy_method).and_return("This is a string")
Run Code Online (Sandbox Code Playgroud)
我遇到的困难是访问sinatra应用程序中的控制器实例.我能够使用sinatra控制器类上的class_eval覆盖当前函数,但我想断言这些函数实际运行.
有人有什么建议吗?
谢谢.
丹,我相信你真正想要的是测试控制器的操作。从测试人员的角度来看,您不应该真正关心它实际调用的内容,而应该关心输出,给定特定输入以及可能的其他一些特殊条件(即模拟或存根其他类)(1)。
您可以查看Sinatra + Rack::Test 的官方文档或来自 devver.net 的这篇博客文章。
(1):如果您的控制器页面正在调用其他一些类(模型、服务等),您可以模拟这些类并对它们寄予期望。例如 :
SomeClass.should_receive(:msg).with(:arg).and_return(:special_value)
Run Code Online (Sandbox Code Playgroud)
有关模拟的更多信息(在本例中使用 RSpec)可以在RSpec 文档页面上找到。
| 归档时间: |
|
| 查看次数: |
2983 次 |
| 最近记录: |