Ruby on rails 应用程序助手规范,测试控制器特定输出?
我有点不确定如何为助手方法编写测试,该方法的输出基于给定的控制器和请求的操作 在我的应用程序帮助程序中给定以下帮助程序方法Ruby on rails 应用程序助手规范,测试控制器特定输出?,ruby-on-rails,rspec,tdd,ruby-on-rails-3.1,helper,Ruby On Rails,Rspec,Tdd,Ruby On Rails 3.1,Helper,我有点不确定如何为助手方法编写测试,该方法的输出基于给定的控制器和请求的操作 在我的应用程序帮助程序中给定以下帮助程序方法 module ApplicationHelper def body_id [ controller.controller_name, controller.action_name ].join("_") end end 。。。如何编写测试此方法的应用程序\u helper\u spec?分配或模拟控制器对象。这会给你一些可以测试的东西。(RSpec包括一个
module ApplicationHelper
def body_id
[ controller.controller_name, controller.action_name ].join("_")
end
end
。。。如何编写测试此方法的
应用程序\u helper\u spec
?分配或模拟控制器对象。这会给你一些可以测试的东西。(RSpec包括一个非常好的模拟/存根库。)正如@marnen laibow koser所提到的,RSpec rails为测试助手提供了一些内置功能。但我有时喜欢为我的助手编写非常轻量级的测试,这些测试不必在我的整个rails环境中加载。这样,测试可以在不到一秒钟的时间内运行,而不是加载rails环境所需的几秒钟
以下是一个例子:
require 'spec_helper_lite'
require_relative '../../app/helpers/application_helper'
describe ApplicationHelper do
let(:helper) do
class Helper
include ApplicationHelper
end
Helper.new
end
it "formats an elapsed time as a number of minutes and seconds" do
helper.elapsed_as_min_sec(90).should == "1min 30sec"
end
end
我的spec_helper_lite.rb文件如下所示:
require 'rspec'
require 'rspec/autorun'
RSpec.configure do |config|
config.order = "random"
end
我有点像rspec noob,你介意分享一个链接或一个如何模拟/存根的例子吗?你有什么问题?基本上,看看。由于
helper
可用,您可以存根helper.controller
以返回具有已知controller\u name
和action\u name
的对象,然后测试您是否按预期处理了这些值。谢谢,这让我走上了正轨。哦,嘿,刚刚注意到其他一些事情。函数名为body\u id
这一事实表明,您正试图为
元素创建id
属性。永远不要这样做——因为任何文档中只有一个
元素,所以它永远不适合使用id
元素。相反,更精细地模块化CSS和JS。