所以我决定调查Rails测试的状态。在阅读了一些关于如何讨论Rails的测试文档是否残暴的接受答案之后,我开始同意。到目前为止,我显然不在理解Rails测试的人群中 - 即使我理解了框架,或者我也这么认为。Shoulda:测试控制器过滤器
我读过Shoulda是一个很好的插件,所以我使用它。我的第一个测试:“确保方法需要一个ID参数”...确定这是有道理的;我想确保我的控制器上的before_filter:validate_id实际工作。这是测试我的索引的GET按其应有的方式工作所需的3中的第1步。失败!显然,测试环境中运行不同于正常的Rails堆栈:
...
lib/action_controller/base.rb:524:in `process_without_filters'
...
检查,我到处都可以导致几乎没有任何信息,包括过滤器时的ActionController :: TestCase的用途得到{}。我在哪里加入“Rails测试人员俱乐部”,这样我可以弄清楚这一点?
context "GET :index requires id" do
setup {
get :index
}
should_redirect_to('/') { }
end
我的过滤器检测ID是否存在并且有效。如果不是,则重定向到“/”。我确信这是问题,因为我运行测试时得到的错误是id/filter生成的对象为nil的结果。 – Bill 2009-02-19 23:40:55