所以我决定调查一下 Rails 的测试状态。在阅读了这里关于 Rails 的测试文档如何残暴的一些公认答案后,我开始同意。到目前为止,我显然不在了解 Rails 测试的人群中——尽管我对框架非常了解,或者我是这么认为的。
我读过Shouda 是一个很好的插件,所以我正在使用它。我的第一个测试:“确保方法需要一个 ID 参数”......嗯,这是有道理的;我想确保我的控制器上的 before_filter :validate_id 确实有效。这是测试我的索引的 GET 是否按预期方式工作所需的 3 步中的第 1 步。失败!显然,测试环境的运行方式与正常的 Rails 堆栈不同:
...
lib/action_controller/base.rb:524:in `process_without_filters'
...
当 ActionController::TestCase 使用 get {} 时,我到处检查几乎没有包含过滤器的信息。我在哪里可以加入“Rails 测试人员俱乐部”,这样我才能解决这个问题?
context "GET :index requires id" do
setup {
get :index
}
should_redirect_to('/') { }
end