所以我决定调查Rails测试的状态。在阅读了几个已接受的答案之后,谈论Rails的测试文档是如何残暴的,我开始同意了。到目前为止,我显然不是那些了解Rails测试的人的俱乐部 - 尽管我很了解框架,或者我认为。
我读过,Shoulda是一个很好用的插件,所以我正在使用它。我的第一个测试:“确保方法需要一个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
答案 0 :(得分:0)
你确定失败与before_filters有关吗?我不这么认为。进一步查看堆栈中的其他错误...我能够通过登录要求测试我的应用程序没问题。
你断言索引需要一个id ...但没有一个请求它。它是否因为没有id而抛出错误?也许您需要捕获它,或者使用assert_raises测试失败模式。
答案 1 :(得分:0)
我同意Andrew的观点,问题可能在于其他地方。我有很多功能测试可以与带有before_filters的控制器一起使用,并且从未遇到过你指定的问题。