不一致的Rspec / Capybara测试

时间:2012-03-29 04:01:47

标签: ruby-on-rails rspec capybara

我在routes.rb文件中注释了[get“pages / home”],重新启动了我的整个测试环境以及以下测试STILL通过:

it "should contain 'This is a test'" do
  get 'home'
  response.body.should have_selector("p")
end

根据我的理解,capybara从内存中的“浏览器”运行rspec测试。如果是这种情况,铁路线必须存在!在评论我的路线后,它仍然可以加载页面 - 我知道这是因为如果我删除<p>选择器,测试失败。修改routes.rb文件后,我重新启动了我的测试套件,但它没有什么区别。

这让我对测试过程失去了信任,因为我测试传递不应该通过!!

1 个答案:

答案 0 :(得分:1)

看起来这个片段属于控制器规范,直接命中控制器。在rspec的最新版本2.9.0中,错误的路由不会使此示例失败。路径不在控制器规范的范围内。

好像你打算编写一个请求规范,它应该使用capybara的visit方法:

# spec/requests/something_spec.rb
require 'spec_helper'

describe 'home page' do

  it "should contain 'This is a test'" do
    visit '/pages/home'
    page.should have_content 'This is a test'
  end

end

有关更多示例,请参阅capybara docs。 Rspec也支持routing specs,但我通常只将它们用于异常路由。

相关问题