Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用RSpec测试金属轨道/机架?_Ruby On Rails_Rspec_Rack - Fatal编程技术网

Ruby on rails 使用RSpec测试金属轨道/机架?

Ruby on rails 使用RSpec测试金属轨道/机架?,ruby-on-rails,rspec,rack,Ruby On Rails,Rspec,Rack,假设我有一个名为Preview的金属类。如何使用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

假设我有一个名为Preview的金属类。如何使用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>
未定义的方法“post”#

如果测试没有明确针对控制器,RSpec似乎不会加载
:post
方法。我尝试过指定
:type=>:controller
,但没有效果。

我认为最好使用rack/test进行测试

rspec有集成规范来包装rails集成测试(通过rack)。现在,只需将该规范放入
/spec/integration/preview_spec.rb

即可(rspec rails 2.2.0和rails 3),您可以使用请求规范来实现这一点:

根据报告:

请求规格活在规格/请求中

[……]

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


看起来不错,但我不想使用另一个测试套件/gem来测试一条路由。我相信你能理解,宾果。这个方法是在什么地方写出来的?感谢RSpec和您的所有工作David.David,Rails 3的这一点是否有所改变,或者我只是做错了?中间件通过重写的ActionDispatch::ShowExceptions捕获了异常,但我的集成测试(即使我将它们放在
/spec/integration/
中)只是不捕获异常。