1

所以我决定调查一下 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
4

2 回答 2

0

您确定失败与 before_filters 有什么关系吗?我认为不会。进一步查找堆栈以查找其他错误...我可以使用登录要求测试我的应用程序没有问题。

您断言该索引需要一个 id ......但在没有一个的情况下请求它。是因为没有id而抛出错误吗?也许你需要抓住它,或者用 assert_raises 测试故障模式。

于 2009-02-19T22:47:04.240 回答
0

我同意安德鲁的观点,问题可能出在其他地方。我有很多功能测试可以与带有 before_filters 的控制器一起使用,并且从未遇到您指定的问题。

于 2009-04-22T02:08:48.113 回答