这是我的控制器:
class MyController < ApplicationController
include MyHelper
def index
get_list_from_params do |list|
@list = list
respond_to do |format|
format.html
format.xml { render :xml => @list }
format.json { render :json => @list }
end
end
end
end
...它所基于的助手:
module MyHelper
def get_list_from_params(param = :id, &on_success)
raw_id = params[param]
begin
id = Integer(raw_id)
rescue
render :template => "invalid_id", :locals => {:id => raw_id }
else
yield MyList.new(id)
end
end
end
...以及我的功能测试(使用的是 Shoulda):
class MyControllerTest < ActionController::TestCase
context "MyController index" do
setup do
get :index
end
should_respond_with :success
end
end
编辑我的 rcov rake 与官方常见问题解答中列出的完全相同:eigenclass.org
RCov (0.9.7.1) 将控制器中直到“def index”的每一行列为绿色,之后的每一行(包括所有“结束”)列为红色/未执行。我知道当我的测试实际执行时,它确实成功地执行了代码。
为什么 RCov 给出不直观的结果?我在这里缺少什么吗?