Application Helper Spec,测试控制器特定的输出?

时间:2011-11-15 18:57:58

标签: 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

...您如何编写测试此方法的application_helper_spec

2 个答案:

答案 0 :(得分:2)

分配或模拟控制器对象。这会给你一些测试的东西。 (RSpec包含一个非常好的模拟/存根库。)

答案 1 :(得分:0)

正如@ 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