【问题标题】:Testing Rails Metal/Rack with RSpec?使用 RSpec 测试 Rails 金属/机架?
【发布时间】:2011-01-27 19:43:59
【问题描述】:

假设我有一个名为 Preview 的 Metal 类。如何使用 RSpec 对其进行测试?

当我尝试时:

require 'spec_helper'

describe Preview do

  it "should return the posted content" do
    post "/preview", :content => "*title*"
    response.body.should == "*title*"
  end

end

我明白了:

undefined method `post' for #<ActiveSupport::TestCase::Subclass_1:0x1058b3098>

如果测试没有明确针对控制器,RSpec 似乎不会加载 :post 方法。我试过指定:type =&gt; :controller 无济于事。

【问题讨论】:

    标签: ruby-on-rails rspec rack


    【解决方案1】:

    rspec 具有包含 rails 集成测试(通过机架)的集成规范。只需将该规范放入./spec/integration/preview_spec.rb

    【讨论】:

    • 宾果游戏。这个方法写在任何地方吗?感谢 RSpec 和 David 所做的所有工作。
    • David,这对于 Rails 3 有没有改变,还是我做错了?我有中间件通过重写的 ActionDispatch::ShowExceptions 捕获的异常,但我的集成测试(即使我将它们放在 ./spec/integration/ 中也只是不捕获异常。
    【解决方案2】:

    现在(rspec-rails 2.2.0 和 rails 3)您可以使用 Request Specs 来实现:

    根据readme file

    请求规范存在于规范/请求中

    [...]

    请求规范混合了 Rails 集成测试的行为。有关详细信息,请参阅 ActionDispatch::Integration::Runner 的文档。

    【讨论】:

      【解决方案3】:

      我认为最好用 rack/test 测试

      【讨论】:

      • 看起来不错,但我不想使用另一个测试套件/gem 来测试一条路线。我相信你明白。
      猜你喜欢
      • 1970-01-01
      • 2011-08-04
      • 2010-10-07
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多